code: private void ensureFetching(long blockIndex) {
      if (fetching != null) {
        if (fetching.futureBuf.isDone()) {
          full.add(fetching);
          fetching = null;
        } else {
          return;
        }
      }
      for (WorkUnit w : full) {
        if (w.blockIndex == blockIndex) {
          return;
        }
      }
      if (full.size() < BUF_COUNT) {
        fetching = new WorkUnit(chan, bufSize, blockIndex);
      } else {
        // reuse the oldest full buffer
        fetching = full.remove(0);
        fetching.resetForIndex(blockIndex);
      }
      bytesRead += bufSize;
      fetching.futureBuf = exec.submit(fetching);
    }
docs: make sure it now goes looking for that block index.