public synchronized void unpinAllPages() throws HyracksDataException { if (pinCount == 1) { for (int i = 0; i < numPages; i++) { bufferCache.unpin(pages[i]); } pagesPinned = false; } pinCount--; }
@Override protected void releasePage() throws HyracksDataException { if (page != null) { bufferCache.unpin(page); page = null; } }
private void unpinPage(ICachedPage page) throws HyracksDataException { if (confiscatedPage == null) { bufferCache.unpin(page); } }
@Override public void unloadPages() throws HyracksDataException { if (pinned) { bufferCache.unpin(page); pinned = false; } }
@Override protected void releasePage() throws HyracksDataException { bufferCache.unpin(page); }
@Override public void unpin(ICachedPage page) throws HyracksDataException { bufferCache.unpin(page); unpinCount.addAndGet(1); }
@Override public void doDestroy() throws HyracksDataException { if (readLatched) { page.releaseReadLatch(); bufferCache.unpin(page); readLatched = false; } tupleIndex = 0; tupleIndexInc = 0; page = null; pathList = null; }
protected void releasePage() throws HyracksDataException { if (page != null) { page.releaseReadLatch(); bufferCache.unpin(page); page = null; } }
protected void releasePage() throws HyracksDataException { if (exclusiveLatchNodes) { page.releaseWriteLatch(isPageDirty); } else { page.releaseReadLatch(); } bufferCache.unpin(page); }
private void releasePage() throws HyracksDataException { if (exclusiveLatchNodes) { page.releaseWriteLatch(isPageDirty); } else { page.releaseReadLatch(); } bufferCache.unpin(page); }
public byte getTreeHeight(ITreeIndexFrame frame) throws HyracksDataException { ICachedPage rootNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, rootPage), false); rootNode.acquireReadLatch(); try { frame.setPage(rootNode); return frame.getLevel(); } finally { rootNode.releaseReadLatch(); bufferCache.unpin(rootNode); } }
@Override public boolean isEmpty(ITreeIndexFrame frame, int rootPage) throws HyracksDataException { ICachedPage rootNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, rootPage), false); rootNode.acquireReadLatch(); try { frame.setPage(rootNode); return frame.getLevel() == 0 && frame.getTupleCount() == 0; } finally { rootNode.releaseReadLatch(); bufferCache.unpin(rootNode); } }
@Override public boolean isEmpty(ITreeIndexFrame frame, int rootPage) throws HyracksDataException { ICachedPage rootNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, rootPage), false); rootNode.acquireReadLatch(); try { frame.setPage(rootNode); return frame.getLevel() == 0 && frame.getTupleCount() == 0; } finally { rootNode.releaseReadLatch(); bufferCache.unpin(rootNode); } } }
@Override public void setRootPageId(int rootPage) throws HyracksDataException { ICachedPage metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getMetadataPageId()), false); ITreeIndexMetadataFrame metaFrame = frameFactory.createFrame(); metaNode.acquireWriteLatch(); try { metaFrame.setPage(metaNode); metaFrame.setRootPageId(rootPage); } finally { metaNode.releaseWriteLatch(true); bufferCache.unpin(metaNode); ready = true; } }
@Override public int getRootPageId() throws HyracksDataException { ICachedPage metaNode; metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getMetadataPageId()), false); ITreeIndexMetadataFrame metaFrame = frameFactory.createFrame(); metaNode.acquireReadLatch(); try { metaFrame.setPage(metaNode); return metaFrame.getRootPageId(); } finally { metaNode.releaseReadLatch(); bufferCache.unpin(metaNode); } }
@Override public int getRootPageId() throws HyracksDataException { ICachedPage metaNode; if (confiscatedPage == null) { metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getMetadataPageId()), false); } else { metaNode = confiscatedPage; } ITreeIndexMetadataFrame metaFrame = frameFactory.createFrame(); metaNode.acquireReadLatch(); try { metaFrame.setPage(metaNode); return metaFrame.getRootPageId(); } finally { metaNode.releaseReadLatch(); if (confiscatedPage == null) { bufferCache.unpin(metaNode); } } }
private void fetchNextLeafPage(int nextLeafPage) throws HyracksDataException { do { ICachedPage nextLeaf = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, nextLeafPage), false); if (exclusiveLatchNodes) { nextLeaf.acquireWriteLatch(); page.releaseWriteLatch(isPageDirty); } else { nextLeaf.acquireReadLatch(); page.releaseReadLatch(); } bufferCache.unpin(page); page = nextLeaf; isPageDirty = false; frame.setPage(page); nextLeafPage = frame.getNextLeaf(); } while (frame.getTupleCount() == 0 && nextLeafPage > 0); }
@Override public long getFileOffset(ITreeIndexMetadataFrame frame, IValueReference key) throws HyracksDataException { int metadataPageNum = getMetadataPageId(); if (metadataPageNum != IBufferCache.INVALID_PAGEID) { ICachedPage metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getMetadataPageId()), false); metaNode.acquireReadLatch(); try { frame.setPage(metaNode); return ((long) metadataPageNum * bufferCache.getPageSizeWithHeader()) + frame.getOffset(key); } finally { metaNode.releaseReadLatch(); bufferCache.unpin(metaNode); } } return -1; } }
private ICachedPage isConsistent(int pageId, BTreeOpContext ctx) throws Exception { ICachedPage node = bufferCache.pin(BufferedFileHandle.getDiskPageId(getFileId(), pageId), false); node.acquireReadLatch(); ctx.getInteriorFrame().setPage(node); boolean isConsistent = ctx.getPageLsns().getLast() == ctx.getInteriorFrame().getPageLsn(); if (!isConsistent) { node.releaseReadLatch(); bufferCache.unpin(node); return null; } return node; }
private void delete(ITupleReference tuple, RTreeOpContext ctx) throws HyracksDataException { ctx.reset(); ctx.setTuple(tuple); ctx.getSplitKey().reset(); ctx.getSplitKey().getLeftTuple().setFieldCount(cmpFactories.length); // We delete the first matching tuple (including the payload data). // We don't update the MBRs of the parents after deleting the record. int tupleIndex = findTupleToDelete(ctx); if (tupleIndex != -1) { try { deleteTuple(tupleIndex, ctx); } finally { ctx.getLeafFrame().getPage().releaseWriteLatch(true); bufferCache.unpin(ctx.getLeafFrame().getPage()); } } }