@Override public Boolean call() throws Exception { if (!isComplete() && null != maybeSendSpeculativeRead(heardFromHostsBitSet)) { if (LOG.isDebugEnabled()) { LOG.debug("Send speculative read for {}. Hosts sent are {}, " + " Hosts heard are {}, ensemble is {}.", this, sentToHosts, heardFromHostsBitSet, ensemble); } return true; } return false; } });
Integer firstRc = null; for (LedgerEntryRequest req : seq) { if (!req.isComplete()) { firstUnread = req.eId; firstRc = req.rc;
@Override protected void submitCallback(int code) { LedgerEntryRequest request; while (!seq.isEmpty() && (request = seq.get(0)) != null) { if (!request.isComplete()) { return; } seq.remove(0); long latencyNanos = MathUtils.elapsedNanos(requestTimeNanos); LedgerEntry entry; if (BKException.Code.OK == request.getRc()) { clientCtx.getClientStats().getReadOpLogger() .registerSuccessfulEvent(latencyNanos, TimeUnit.NANOSECONDS); // callback with completed entry entry = new LedgerEntry(request.entryImpl); } else { clientCtx.getClientStats().getReadOpLogger() .registerFailedEvent(latencyNanos, TimeUnit.NANOSECONDS); entry = null; } request.close(); listener.onEntryComplete(request.getRc(), lh, entry, ctx); } // if all entries are already completed. cancelSpeculativeTask(true); }