protected FilenameFilter getTransactionFileFilter(boolean inclusive) throws HyracksDataException { String[] files = listDirFiles(baseDir, txnFileNameFilter); if (files.length == 0) { return dummyFilter; } else { return createTransactionFilter(files[0], inclusive); } }
private long getOnDiskLastUsedComponentSequence(FilenameFilter filenameFilter) throws HyracksDataException { long maxComponentSeq = -1; final String[] files = listDirFiles(baseDir, filenameFilter); for (String fileName : files) { maxComponentSeq = Math.max(maxComponentSeq, IndexComponentFileReference.of(fileName).getSequenceEnd()); } return maxComponentSeq; } }
@Override public void recoverTransaction() throws HyracksDataException { String[] files = listDirFiles(baseDir, txnFileNameFilter); if (files.length == 0) { // Do nothing } else if (files.length > 1) { throw HyracksDataException.create(ErrorCode.FOUND_MULTIPLE_TRANSACTIONS, baseDir); } else { IoUtil.delete(baseDir.getChild(files[0])); } }
@Override public void deleteTransactionFiles() throws HyracksDataException { String[] files = listDirFiles(baseDir, txnFileNameFilter); if (files.length == 0) { // Do nothing } else if (files.length > 1) { throw HyracksDataException.create(ErrorCode.FOUND_MULTIPLE_TRANSACTIONS, baseDir); } else { //create transaction filter FilenameFilter transactionFilter = createTransactionFilter(files[0], true); String[] componentsFiles = listDirFiles(baseDir, transactionFilter); for (String fileName : componentsFiles) { FileReference file = baseDir.getChild(fileName); IoUtil.delete(file); } // delete the txn lock file IoUtil.delete(baseDir.getChild(files[0])); } }
protected void cleanupAndGetValidFilesInternal(FilenameFilter filter, TreeIndexFactory<? extends ITreeIndex> treeFactory, ArrayList<IndexComponentFileReference> allFiles, IBufferCache bufferCache) throws HyracksDataException { String[] files = listDirFiles(baseDir, filter); for (String fileName : files) { FileReference fileRef = getFileReference(fileName); if (treeFactory == null) { allFiles.add(IndexComponentFileReference.of(fileRef)); continue; } TreeIndexState idxState = isValidTreeIndex(treeFactory.createIndexInstance(fileRef)); if (idxState == TreeIndexState.VALID) { allFiles.add(IndexComponentFileReference.of(fileRef)); } else if (idxState == TreeIndexState.INVALID) { bufferCache.deleteFile(fileRef); } } }