@Override public boolean run(ClientContext context) { parent.failOnDiskError(e); return true; }
@Override public boolean run(ClientContext context) { segment.parent.failOnDiskError(e); return true; }
public Key[] listUnfetchedKeys() { try { ArrayList<Key> keys = new ArrayList<Key>(); for(SplitFileFetcherSegmentStorage segment : segments) segment.getUnfetchedKeys(keys); return keys.toArray(new Key[keys.size()]); } catch (IOException e) { failOnDiskError(e); return new Key[0]; } }
private synchronized void writeGeneralProgress(boolean force) { if(!dirtyGeneralProgress && !force) return; dirtyGeneralProgress = false; byte[] generalProgress = encodeGeneralProgress(); try { raf.pwrite(offsetGeneralProgress, generalProgress, 0, generalProgress.length); } catch (IOException e) { failOnDiskError(e); } }
public ClientKey getKey(MyKey key) { try { return segments[key.segmentNumber].getSegmentKeys().getKey(key.blockNumber, null, false); } catch (IOException e) { this.failOnDiskError(e); return null; } }
public boolean definitelyWantKey(NodeCHK key) { synchronized(this) { if(succeeded || failed || finished) return false; } SplitFileSegmentKeys keys; try { keys = getSegmentKeys(); } catch (IOException e) { parent.failOnDiskError(e); return false; } synchronized(this) { // Synched because of blocksFound return blockChooser.getBlockNumber(keys, key) >= 0; } }
failOnDiskError(e); return false; failOnDiskError(e); return false; } catch (IOException e) { if(persistent) failOnDiskError(e);
@Override public boolean run(ClientContext context) { try { // FIXME CPU USAGE Add another API to the segment to avoid re-decoding. SplitFileSegmentKeys keys = segments[blockNo].getSegmentKeys(); if(keys == null) return false; boolean success = segments[blockNo].innerOnGotKey(key.getNodeCHK(), block, keys, blockNumbers[blockNo], data); if(success) { if(logMINOR) Logger.minor(this, "Successfully decoded cross-segment block"); } else { // Not really a big deal, but potentially interesting... Logger.warning(this, "Decoded cross-segment block but not wanted by segment"); } } catch (IOException e) { parent.failOnDiskError(e); return true; } return false; } });
} catch (IOException e) { Logger.error(this, "Failed to decode "+this+" because of disk error: "+e, e); parent.failOnDiskError(e); } catch (PersistenceDisabledException e) { shutdown = true;
} catch (IOException e) { Logger.error(this, "Failed to decode "+this+" because of disk error: "+e, e); parent.failOnDiskError(e); } catch (PersistenceDisabledException e) {