@Override public synchronized void deactivate() throws HyracksDataException { if (!isActive) { throw HyracksDataException.create(ErrorCode.CANNOT_DEACTIVATE_INACTIVE_INDEX); } freePageManager.close(HaltOnFailureCallback.INSTANCE); bufferCache.closeFile(fileId); isActive = false; }
public static void markAsValid(ITreeIndex treeIndex, boolean forceToDisk, IPageWriteFailureCallback callback) throws HyracksDataException { int fileId = treeIndex.getFileId(); IBufferCache bufferCache = treeIndex.getBufferCache(); treeIndex.getPageManager().close(callback); if (callback.hasFailed()) { throw HyracksDataException.create(callback.getFailure()); } // Force modified metadata page to disk. // If the index is not durable, then the flush is not necessary. if (forceToDisk) { bufferCache.force(fileId, true); } }
@Override public synchronized void create() throws HyracksDataException { if (isActive) { throw HyracksDataException.create(ErrorCode.CANNOT_CREATE_ACTIVE_INDEX); } fileId = bufferCache.createFile(file); boolean failed = true; try { bufferCache.openFile(fileId); failed = false; } finally { if (failed) { bufferCache.deleteFile(fileId); } } failed = true; try { freePageManager.open(fileId); freePageManager.init(interiorFrameFactory, leafFrameFactory); setRootPage(); freePageManager.close(HaltOnFailureCallback.INSTANCE); failed = false; } finally { bufferCache.closeFile(fileId); if (failed) { bufferCache.deleteFile(fileId); } } }