@Override
public byte[] getId(int dimensionNum, byte[] bytes, int numIdBytes) throws IOException, InterruptedException {
try {
return readThroughCache.get(new Key(dimensionNum, new BoxedByteArray(bytes),
numIdBytes));
} catch (ExecutionException e) {
Throwable cause = e.getCause();
if(cause instanceof IOException) {
throw (IOException)cause;