Candor.Data.SequenceIdGenerator.RenewCachedIds C# (CSharp) Method

RenewCachedIds() private method

private RenewCachedIds ( SequenceIdStore sequence ) : void
sequence SequenceIdStore
return void
        private void RenewCachedIds(SequenceIdStore sequence)
        {
            //sequence is already locked during this call from calling method.
            int retryCount = 0;
            while (retryCount < MaxSyncRetries + 1)
            {
                try
                {
                    if (retryCount == 0 && String.IsNullOrWhiteSpace(sequence.LastId))
                        _store.InsertOrUpdate(sequence.Schema);

                    var syncData = _store.GetData(sequence.Schema.TableName);
                    var lastStoredId = syncData.Data;
                    syncData.Data = syncData.Data.LexicalAdd(sequence.CharacterSet, _ignoreCase, sequence.Schema.RangeSize);
                    if (_store.TryWrite(syncData))
                    {
                        sequence.LastId = lastStoredId; //next id used will increment from here.
                        sequence.FinalCachedId = syncData.Data;
                        return;
                    }
                }
                catch (Exception aex)
                {
                    LogProvider.WarnFormat("Failed to RenewCachedIds for table '{0}' on attempt {1} of {2}", aex,
                                            sequence.Schema.TableName, retryCount, MaxSyncRetries);
                    if (retryCount == MaxSyncRetries)
                        throw;
                }
                retryCount++;
            }
            LogProvider.ErrorFormat("Failed to update the OptimisticSyncStore for table '{0}' after {1} attempts.  RangeSize: {2}.",
                sequence.Schema.TableName, retryCount, sequence.Schema.RangeSize);
            throw new ApplicationException(String.Format(
                "Failed to update the OptimisticSyncStore for table '{0}' after {1} attempts.  RangeSize: {2}.",
                sequence.Schema.TableName, retryCount, sequence.Schema.RangeSize));
        }