@Override public void sealSegment(SealSegment sealSegment) { String segment = sealSegment.getSegment(); final String operation = "sealSegment"; if (!verifyToken(segment, sealSegment.getRequestId(), sealSegment.getDelegationToken(), operation)) { return; } log.info(sealSegment.getRequestId(), "Sealing segment {} ", sealSegment); segmentStore.sealStreamSegment(segment, TIMEOUT) .thenAccept(size -> connection.send(new SegmentSealed(sealSegment.getRequestId(), segment))) .whenComplete((r, e) -> { if (e != null) { handleException(sealSegment.getRequestId(), segment, operation, e); } else { dynamicLogger.freezeCounter(nameFromSegment(SEGMENT_WRITE_BYTES, segment)); dynamicLogger.freezeCounter(nameFromSegment(SEGMENT_WRITE_EVENTS, segment)); if (statsRecorder != null) { statsRecorder.sealSegment(sealSegment.getSegment()); } } }); }