Exemplo n.º 1
0
        private int GetLastStreamEventNumberCached(ITransactionFileReader reader, string streamId)
        {
            Ensure.NotNull(streamId, "streamId");

            StreamCacheInfo streamInfo;

            if (_streamInfoCache.TryGet(streamId, out streamInfo) && streamInfo.LastEventNumber.HasValue)
            {
                return(streamInfo.LastEventNumber.Value);
            }

            var lastEventNumber = GetLastStreamEventNumberUncached(reader, streamId);

            if (lastEventNumber != ExpectedVersion.NoStream)
            {
                // we should take Max on LastEventNumber because there could be a commit happening in parallel thread
                // so we should not overwrite the actual LastEventNumber updated by Commit method with our stale one
                _streamInfoCache.Put(
                    streamId,
                    key => new StreamCacheInfo(lastEventNumber, null),
                    (key, old) => new StreamCacheInfo(Math.Max(lastEventNumber, old.LastEventNumber ?? -1), old.Metadata));
            }
            return(lastEventNumber);
        }
Exemplo n.º 2
0
 public bool IsOptimized(TFChunk.TFChunk chunk)
 {
     TFChunk.TFChunk value;
     return(_cache.TryGet(chunk.FileName, out value));
 }