public AbstractLSMIndex(IIOManager ioManager, IBufferCache diskBufferCache, ILSMIndexFileManager fileManager, double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallbackFactory ioOpCallbackFactory, ILSMDiskComponentFactory componentFactory, ILSMDiskComponentFactory bulkLoadComponentFactory, boolean durable, ITracer tracer) throws HyracksDataException { this.ioManager = ioManager; this.diskBufferCache = diskBufferCache; this.fileManager = fileManager; this.bloomFilterFalsePositiveRate = bloomFilterFalsePositiveRate; this.ioOpCallback = ioOpCallbackFactory.createIoOpCallback(this); this.componentFactory = componentFactory; this.bulkLoadComponentFactory = bulkLoadComponentFactory; this.durable = durable; this.tracer = tracer; lsmHarness = new ExternalIndexHarness(this, ioScheduler, mergePolicy, opTracker, diskBufferCache.isReplicationEnabled()); isActive = false; diskComponents = new LinkedList<>(); this.inactiveDiskComponents = new LinkedList<>(); // Memory related objects are nulled virtualBufferCaches = null; memoryComponents = null; currentMutableComponentId = null; flushRequests = null; filterHelper = null; filterFrameFactory = null; filterManager = null; treeFields = null; filterFields = null; }
@Override public ILSMIOOperationCallback createIoOpCallback(ILSMIndex index) throws HyracksDataException { ILSMIOOperationCallback inner = encapsulated.createIoOpCallback(index); return new EncapsulatingIoCallback(inner, scheduledCallback, beforeOperationCallback, afterOperationCallback, afterFinalizeCallback, completedCallback); }