@Override public void add(long delta) { getInstance().add(delta); }
@Override public void incCounterValue(String name, long delta) { Exceptions.checkNotNullOrEmpty(name, "name"); Preconditions.checkNotNull(delta); String counterName = name + ".Counter"; try { Counter counter = countersCache.get(counterName, new Callable<Counter>() { @Override public Counter call() throws Exception { return underlying.createCounter(counterName); } }); counter.add(delta); } catch (ExecutionException e) { log.error("Error while countersCache create counter", e); } }
@Override public void updateCounterValue(String name, long value) { Exceptions.checkNotNullOrEmpty(name, "name"); String counterName = name + ".Counter"; Counter counter = countersCache.getIfPresent(counterName); if (counter != null) { counter.clear(); } else { counter = underlying.createCounter(counterName); } counter.add(value); countersCache.put(name, counter); }
private int doRead(SegmentHandle handle, long offset, byte[] buffer, int bufferOffset, int length) throws IOException { long traceId = LoggerHelpers.traceEnter(log, "read", handle.getSegmentName(), offset, bufferOffset, length); Timer timer = new Timer(); Path path = Paths.get(config.getRoot(), handle.getSegmentName()); long fileSize = Files.size(path); if (fileSize < offset) { throw new IllegalArgumentException(String.format("Reading at offset (%d) which is beyond the " + "current size of segment (%d).", offset, fileSize)); } try (FileChannel channel = FileChannel.open(path, StandardOpenOption.READ)) { int totalBytesRead = 0; do { ByteBuffer readBuffer = ByteBuffer.wrap(buffer, bufferOffset, length); int bytesRead = channel.read(readBuffer, offset); bufferOffset += bytesRead; totalBytesRead += bytesRead; length -= bytesRead; } while (length != 0); FileSystemMetrics.READ_LATENCY.reportSuccessEvent(timer.getElapsed()); FileSystemMetrics.READ_BYTES.add(totalBytesRead); LoggerHelpers.traceLeave(log, "read", traceId, totalBytesRead); return totalBytesRead; } }
FileSystemMetrics.WRITE_BYTES.add(totalBytesWritten); LoggerHelpers.traceLeave(log, "write", traceId); return null;
@Override public int read(SegmentHandle handle, long offset, byte[] buffer, int bufferOffset, int length) throws StreamSegmentException { ensureInitializedAndNotClosed(); long traceId = LoggerHelpers.traceEnter(log, "read", handle, offset, length); if (offset < 0 || bufferOffset < 0 || length < 0 || buffer.length < bufferOffset + length) { throw new ArrayIndexOutOfBoundsException(String.format( "Offset (%s) must be non-negative, and bufferOffset (%s) and length (%s) must be valid indices into buffer of size %s.", offset, bufferOffset, length, buffer.length)); } Timer timer = new Timer(); try { return HDFS_RETRY.run(() -> { int totalBytesRead = readInternal(handle, buffer, offset, bufferOffset, length); HDFSMetrics.READ_LATENCY.reportSuccessEvent(timer.getElapsed()); HDFSMetrics.READ_BYTES.add(totalBytesRead); LoggerHelpers.traceLeave(log, "read", traceId, handle, offset, totalBytesRead); return totalBytesRead; }); } catch (IOException e) { throw HDFSExceptionHelpers.convertException(handle.getSegmentName(), e); } catch (RetriesExhaustedException e) { throw HDFSExceptionHelpers.convertException(handle.getSegmentName(), e.getCause()); } }
HDFSMetrics.WRITE_BYTES.add(length); LoggerHelpers.traceLeave(log, "write", traceId, handle, offset, length);
/** * Test counter registered and worked well with StatsLogger. */ @Test public void testCounter() { Counter testCounter = statsLogger.createCounter("testCounter"); testCounter.add(17); assertEquals(17, testCounter.get()); // test dynamic counter int sum = 0; for (int i = 1; i < 10; i++) { sum += i; dynamicLogger.incCounterValue("dynamicCounter", i); assertEquals(sum, MetricRegistryUtils.getCounter("pravega.dynamicCounter.Counter").getCount()); } dynamicLogger.freezeCounter("dynamicCounter"); assertEquals(null, MetricRegistryUtils.getCounter("pravega.dynamicCounter.Counter")); }
/** * Test transition back to null provider. */ @Test public void testTransitionBackToNullProvider() { MetricsConfig config = MetricsConfig.builder() .with(MetricsConfig.ENABLE_STATISTICS, false) .build(); MetricsProvider.initialize(config); Counter counter = statsLogger.createCounter("continuity-counter"); counter.add(1L); assertEquals(0L, counter.get()); config = MetricsConfig.builder() .with(MetricsConfig.ENABLE_STATISTICS, true) .build(); MetricsProvider.initialize(config); counter.add(1L); assertEquals(1L, counter.get()); } }