@Override public IFIFOPageQueue createFIFOQueue() { return bufferCache.createFIFOQueue(); }
public LAFWriter(CompressedFileManager compressedFileManager, IBufferCache bufferCache) { this.compressedFileManager = compressedFileManager; this.bufferCache = bufferCache; queue = bufferCache.createFIFOQueue(); cachedFrames = new HashMap<>(); recycledFrames = new ArrayDeque<>(); this.fileId = compressedFileManager.getFileId(); callBack = new PageWriteFailureCallback(); maxNumOfEntries = bufferCache.getPageSize() / ENTRY_LENGTH; lastOffset = 0; totalNumOfPages = 0; maxPageId = -1; currentPageId = -1; }
throw HyracksDataException.create(ErrorCode.CANNOT_CREATE_BLOOM_FILTER_BUILDER_FOR_INACTIVE_FILTER); queue = bufferCache.createFIFOQueue(); this.estimatedNumElements = estimatedNumElemenets; this.numHashes = numHashes;
public AbstractTreeIndexBulkLoader(float fillFactor) throws HyracksDataException { leafFrame = leafFrameFactory.createFrame(); interiorFrame = interiorFrameFactory.createFrame(); metaFrame = freePageManager.createMetadataFrame(); queue = bufferCache.createFIFOQueue(); if (!isEmptyTree(leafFrame)) { throw HyracksDataException.create(ErrorCode.CANNOT_BULK_LOAD_NON_EMPTY_TREE); } this.cmp = MultiComparator.create(cmpFactories); leafFrame.setMultiComparator(cmp); interiorFrame.setMultiComparator(cmp); tupleWriter = leafFrame.getTupleWriter(); NodeFrontier leafFrontier = new NodeFrontier(leafFrame.createTupleReference()); leafFrontier.pageId = freePageManager.takePage(metaFrame); leafFrontier.page = bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId, leafFrontier.pageId)); interiorFrame.setPage(leafFrontier.page); interiorFrame.initBuffer((byte) 0); interiorMaxBytes = (int) (interiorFrame.getBuffer().capacity() * fillFactor); leafFrame.setPage(leafFrontier.page); leafFrame.initBuffer((byte) 0); leafMaxBytes = (int) (leafFrame.getBuffer().capacity() * fillFactor); slotSize = leafFrame.getSlotSize(); nodeFrontiers.add(leafFrontier); pagesToWrite = new ArrayList<>(); compressedPageWriter = bufferCache.getCompressedPageWriter(fileId); }
public AbstractOnDiskInvertedIndexBulkLoader(float btreeFillFactor, boolean verifyInput, long numElementsHint, boolean checkIfEmptyIndex, int startPageId) throws HyracksDataException { this.verifyInput = verifyInput; this.invListCmp = MultiComparator.create(invListCmpFactories); if (verifyInput) { allCmp = MultiComparator.create(btree.getComparatorFactories(), invListCmpFactories); } else { allCmp = null; } this.btreeTupleBuilder = new ArrayTupleBuilder(btree.getFieldCount()); this.btreeTupleReference = new ArrayTupleReference(); this.lastTupleBuilder = new ArrayTupleBuilder(numTokenFields + numInvListKeys); this.lastTuple = new ArrayTupleReference(); this.btreeBulkloader = btree.createBulkLoader(btreeFillFactor, verifyInput, numElementsHint, checkIfEmptyIndex); currentPageId = startPageId; currentPage = bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId, currentPageId)); invListBuilder.setTargetBuffer(currentPage.getBuffer().array(), 0); queue = bufferCache.createFIFOQueue(); }
@Override public void close(IPageWriteFailureCallback callback) throws HyracksDataException { if (ready) { IFIFOPageQueue queue = bufferCache.createFIFOQueue(); ITreeIndexMetadataFrame metaFrame = frameFactory.createFrame(); confiscatedPage.acquireWriteLatch(); try { metaFrame.setPage(confiscatedPage); metaFrame.setValid(true); } finally { confiscatedPage.releaseWriteLatch(false); } int finalMetaPage = getMaxPageId(metaFrame) + 1; confiscatedPage.setDiskPageId(BufferedFileHandle.getDiskPageId(fileId, finalMetaPage)); final ICompressedPageWriter compressedPageWriter = bufferCache.getCompressedPageWriter(fileId); compressedPageWriter.prepareWrite(confiscatedPage); // WARNING: flushing the metadata page should be done after releasing the write latch; otherwise, the page // won't be flushed to disk because it won't be dirty until the write latch has been released. queue.put(confiscatedPage, callback); bufferCache.finishQueue(); compressedPageWriter.endWriting(); metadataPage = getMetadataPageId(); ready = false; } else if (confiscatedPage != null) { bufferCache.returnPage(confiscatedPage, false); } confiscatedPage = null; }