/** Write the status metadata to disk, after a series of updates. */ public void writeMetadata() throws IOException { writeMetadata(true); }
@Override public boolean run(ClientContext context) { try { if(isFinishing()) return false; RAFLock lock = raf.lockOpen(); try { for(SplitFileFetcherSegmentStorage segment : segments) { segment.writeMetadata(false); } keyListener.maybeWriteMainBloomFilter(offsetMainBloomFilter); } finally { lock.unlock(); } writeGeneralProgress(false); return false; } catch (IOException e) { if(isFinishing()) return false; Logger.error(this, "Failed writing metadata for "+SplitFileFetcherStorage.this+": "+e, e); return false; } }
writeMetadata(); boolean wasCorrupt; synchronized(this) { if(validBlocks < blocksForDecode()) { writeMetadata(); boolean wasCorrupt; synchronized(this) { checkBlocks = null; writeMetadata();
segment.writeMetadata(); raf.pwrite(offsetGeneralProgress, generalProgress, 0, generalProgress.length); keyListener.innerWriteMainBloomFilter(offsetMainBloomFilter);