コード例 #1
0
        public TransactionInfo GetTransactionInfo(long writerCheckpoint, long transactionId)
        {
            TransactionInfo transactionInfo;

            if (!_transactionInfoCache.TryGet(transactionId, out transactionInfo))
            {
                if (GetTransactionInfoUncached(writerCheckpoint, transactionId, out transactionInfo))
                {
                    _transactionInfoCache.Put(transactionId, transactionInfo, 0);
                }
                else
                {
                    transactionInfo = new TransactionInfo(int.MinValue, null);
                }
                Interlocked.Increment(ref _notCachedTransInfo);
            }
            else
            {
                Interlocked.Increment(ref _cachedTransInfo);
            }
            return(transactionInfo);
        }
コード例 #2
0
 public void UpdateTransactionInfo(long transactionId, long logPosition, TransactionInfo transactionInfo)
 {
     _notProcessedTrans.Enqueue(new TransInfo(transactionId, logPosition));
     _transactionInfoCache.Put(transactionId, transactionInfo, +1);
 }
コード例 #3
0
ファイル: IndexWriter.cs プロジェクト: adbrowne/EventStore
 private bool GetTransactionInfoUncached(long writerCheckpoint, long transactionId, out TransactionInfo transactionInfo)
 {
     using (var reader = _indexBackend.BorrowReader())
     {
         reader.Reposition(writerCheckpoint);
         SeqReadResult result;
         while ((result = reader.TryReadPrev()).Success)
         {
             if (result.LogRecord.LogPosition < transactionId)
                 break;
             if (result.LogRecord.RecordType != LogRecordType.Prepare)
                 continue;
             var prepare = (PrepareLogRecord)result.LogRecord;
             if (prepare.TransactionPosition == transactionId)
             {
                 transactionInfo = new TransactionInfo(prepare.TransactionOffset, prepare.EventStreamId);
                 return true;
             }
         }
     }
     transactionInfo = new TransactionInfo(int.MinValue, null);
     return false;
 }
コード例 #4
0
ファイル: IndexWriter.cs プロジェクト: adbrowne/EventStore
 public TransactionInfo GetTransactionInfo(long writerCheckpoint, long transactionId)
 {
     TransactionInfo transactionInfo;
     if (!_transactionInfoCache.TryGet(transactionId, out transactionInfo))
     {
         if (GetTransactionInfoUncached(writerCheckpoint, transactionId, out transactionInfo))
             _transactionInfoCache.Put(transactionId, transactionInfo, 0);
         else
             transactionInfo = new TransactionInfo(int.MinValue, null);
         Interlocked.Increment(ref _notCachedTransInfo);
     }
     else
     {
         Interlocked.Increment(ref _cachedTransInfo);
     }
     return transactionInfo;
 }
コード例 #5
0
ファイル: IndexWriter.cs プロジェクト: adbrowne/EventStore
 public void UpdateTransactionInfo(long transactionId, long logPosition, TransactionInfo transactionInfo)
 {
     _notProcessedTrans.Enqueue(new TransInfo(transactionId, logPosition));
     _transactionInfoCache.Put(transactionId, transactionInfo, +1);
 }
コード例 #6
0
 private bool GetTransactionInfoUncached(long writerCheckpoint, long transactionId, out TransactionInfo transactionInfo)
 {
     var seqReader = GetSeqReader();
     try
     {
         seqReader.Reposition(writerCheckpoint);
         SeqReadResult result;
         while ((result = seqReader.TryReadPrev()).Success)
         {
             if (result.LogRecord.Position < transactionId)
                 break;
             if (result.LogRecord.RecordType != LogRecordType.Prepare)
                 continue;
             var prepare = (PrepareLogRecord)result.LogRecord;
             if (prepare.TransactionPosition == transactionId)
             {
                 transactionInfo = new TransactionInfo(prepare.TransactionOffset, prepare.EventStreamId);
                 return true;
             }
         }
     }
     finally
     {
         ReturnSeqReader(seqReader);
     }
     transactionInfo = new TransactionInfo(int.MinValue, null);
     return false;
 }
コード例 #7
0
 TransactionInfo IReadIndex.GetTransactionInfo(long writerCheckpoint, long transactionId)
 {
     TransactionInfo transactionInfo;
     if (!_transactionInfoCache.TryGet(transactionId, out transactionInfo))
     {
         if (GetTransactionInfoUncached(writerCheckpoint, transactionId, out transactionInfo))
             _transactionInfoCache.Put(transactionId, transactionInfo);
         else
             transactionInfo = new TransactionInfo(int.MinValue, null);
     }
     return transactionInfo;
 }
コード例 #8
0
 void IReadIndex.UpdateTransactionInfo(long transactionId, TransactionInfo transactionInfo)
 {
     _transactionInfoCache.Put(transactionId, transactionInfo);
 }
コード例 #9
0
 private bool GetTransactionInfoUncached(long writerCheckpoint, long transactionId, out TransactionInfo transactionInfo)
 {
     using (var reader = _indexBackend.BorrowReader())
     {
         reader.Reposition(writerCheckpoint);
         SeqReadResult result;
         while ((result = reader.TryReadPrev()).Success)
         {
             if (result.LogRecord.LogPosition < transactionId)
             {
                 break;
             }
             if (result.LogRecord.RecordType != LogRecordType.Prepare)
             {
                 continue;
             }
             var prepare = (PrepareLogRecord)result.LogRecord;
             if (prepare.TransactionPosition == transactionId)
             {
                 transactionInfo = new TransactionInfo(prepare.TransactionOffset, prepare.EventStreamId);
                 return(true);
             }
         }
     }
     transactionInfo = new TransactionInfo(int.MinValue, null);
     return(false);
 }
コード例 #10
0
 public void UpdateTransactionInfo(long transactionId, TransactionInfo transactionInfo)
 {
     throw new NotImplementedException();
 }