예제 #1
0
        private const int FlushPageInterval = 32;         // max 65536 pages to write resulting in 2048 flushes per chunk

        public TFChunkScavenger(TFChunkDb db, ITFChunkScavengerLog scavengerLog, ITableIndex tableIndex,
                                IReadIndex readIndex, long?maxChunkDataSize = null,
                                bool unsafeIgnoreHardDeletes = false, int threads = 1)
        {
            Ensure.NotNull(db, "db");
            Ensure.NotNull(scavengerLog, "scavengerLog");
            Ensure.NotNull(tableIndex, "tableIndex");
            Ensure.NotNull(readIndex, "readIndex");
            Ensure.Positive(threads, "threads");

            if (threads > MaxThreadCount)
            {
                Log.Warning(
                    "{numThreads} scavenging threads not allowed.  Max threads allowed for scavenging is {maxThreadCount}. Capping.",
                    threads, MaxThreadCount);
                threads = MaxThreadCount;
            }

            _db                      = db;
            _scavengerLog            = scavengerLog;
            _tableIndex              = tableIndex;
            _readIndex               = readIndex;
            _maxChunkDataSize        = maxChunkDataSize ?? db.Config.ChunkSize;
            _unsafeIgnoreHardDeletes = unsafeIgnoreHardDeletes;
            _threads                 = threads;
        }
        public TFChunkScavenger(TFChunkDb db, ITFChunkScavengerLog scavengerLog, ITableIndex tableIndex, IReadIndex readIndex, long? maxChunkDataSize = null, bool unsafeIgnoreHardDeletes=false)
        {
            Ensure.NotNull(db, "db");
            Ensure.NotNull(scavengerLog, "scavengerLog");
            Ensure.NotNull(tableIndex, "tableIndex");
            Ensure.NotNull(readIndex, "readIndex");

            _db = db;
            _scavengerLog = scavengerLog;
            _tableIndex = tableIndex;
            _readIndex = readIndex;
            _maxChunkDataSize = maxChunkDataSize ?? db.Config.ChunkSize;
            _unsafeIgnoreHardDeletes = unsafeIgnoreHardDeletes;
        }