@Override public void abort() throws HyracksDataException { for (ICachedPage p : pages) { if (p != null) { bufferCache.returnPage(p, false); } } if (metaDataPage != null) { bufferCache.returnPage(metaDataPage, false); } } }
@Override public void returnPage(ICachedPage page) { bufferCache.returnPage(page); }
@Override public void abort() { synchronized (cachedFrames) { for (Entry<Integer, LAFFrame> frame : cachedFrames.entrySet()) { bufferCache.returnPage(frame.getValue().cPage); } } }
protected void handleException() { // Unlatch and unpin pages that weren't in the queue to avoid leaking memory. compressedPageWriter.abort(); for (NodeFrontier nodeFrontier : nodeFrontiers) { ICachedPage frontierPage = nodeFrontier.page; if (frontierPage.confiscated()) { bufferCache.returnPage(frontierPage, false); } } for (ICachedPage pageToDiscard : pagesToWrite) { bufferCache.returnPage(pageToDiscard, false); } releasedLatches = true; }
bufferCache.returnPage(pages[i]);
bufferCache.returnPage(leafFrontier.page, false); } else { leafFrontier.lastTuple.resetByTupleIndex(leafFrame, leafFrame.getTupleCount() - 1);
@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; }