@Override public Buffer load(Key key) throws Exception { ChunkReader rebufferer = key.file; metrics.misses.mark(); try (Timer.Context ctx = metrics.missLatency.time()) { ByteBuffer buffer = BufferPool.get(key.file.chunkSize(), key.file.preferredBufferType()); assert buffer != null; rebufferer.readChunk(key.position, buffer); return new Buffer(buffer, key.position); } }
@Override public Buffer rebuffer(long position) { try { metrics.requests.mark(); long pageAlignedPos = position & alignmentMask; Buffer buf; do buf = cache.get(new Key(source, pageAlignedPos)).reference(); while (buf == null); return buf; } catch (Throwable t) { Throwables.propagateIfInstanceOf(t.getCause(), CorruptSSTableException.class); throw Throwables.propagate(t); } }
@Override public Buffer rebuffer(long position) { try { metrics.requests.mark(); long pageAlignedPos = position & alignmentMask; Buffer buf; do buf = cache.get(new Key(source, pageAlignedPos)).reference(); while (buf == null); return buf; } catch (Throwable t) { Throwables.propagateIfInstanceOf(t.getCause(), CorruptSSTableException.class); throw Throwables.propagate(t); } }
@Override public Buffer rebuffer(long position) { try { metrics.requests.mark(); long pageAlignedPos = position & alignmentMask; Buffer buf; do buf = cache.get(new Key(source, pageAlignedPos)).reference(); while (buf == null); return buf; } catch (Throwable t) { Throwables.propagateIfInstanceOf(t.getCause(), CorruptSSTableException.class); throw Throwables.propagate(t); } }
@Override public Buffer rebuffer(long position) { try { metrics.requests.mark(); long pageAlignedPos = position & alignmentMask; Buffer buf; do buf = cache.get(new Key(source, pageAlignedPos)).reference(); while (buf == null); return buf; } catch (Throwable t) { Throwables.propagateIfInstanceOf(t.getCause(), CorruptSSTableException.class); throw Throwables.propagate(t); } }
@Override public Buffer load(Key key) throws Exception { ChunkReader rebufferer = key.file; metrics.misses.mark(); try (Timer.Context ctx = metrics.missLatency.time()) { ByteBuffer buffer = BufferPool.get(key.file.chunkSize(), key.file.preferredBufferType()); assert buffer != null; rebufferer.readChunk(key.position, buffer); return new Buffer(buffer, key.position); } }
@Override public void onRemoval(Key key, Buffer buffer, RemovalCause cause) { buffer.release(); }
@Override public void onRemoval(Key key, Buffer buffer, RemovalCause cause) { buffer.release(); }
@Override public Buffer load(Key key) throws Exception { ChunkReader rebufferer = key.file; metrics.misses.mark(); try (Timer.Context ctx = metrics.missLatency.time()) { ByteBuffer buffer = BufferPool.get(key.file.chunkSize(), key.file.preferredBufferType()); assert buffer != null; rebufferer.readChunk(key.position, buffer); return new Buffer(buffer, key.position); } }
@Override public Buffer load(Key key) throws Exception { ChunkReader rebufferer = key.file; metrics.misses.mark(); try (Timer.Context ctx = metrics.missLatency.time()) { ByteBuffer buffer = BufferPool.get(key.file.chunkSize(), key.file.preferredBufferType()); assert buffer != null; rebufferer.readChunk(key.position, buffer); return new Buffer(buffer, key.position); } }
@Override public void onRemoval(Key key, Buffer buffer, RemovalCause cause) { buffer.release(); }
@Override public void onRemoval(Key key, Buffer buffer, RemovalCause cause) { buffer.release(); }