@Override
    public CompletableFuture<Void> append(String streamSegmentName, byte[] data, Collection<AttributeUpdate> attributeUpdates, Duration timeout) {
        ensureRunning();

        TimeoutTimer timer = new TimeoutTimer(timeout);
        logRequest("append", streamSegmentName, data.length);
        this.metrics.append();
        return this.metadataStore.getOrAssignSegmentId(streamSegmentName, timer.getRemaining(),
                streamSegmentId -> {
                    StreamSegmentAppendOperation operation = new StreamSegmentAppendOperation(streamSegmentId, data, attributeUpdates);
                    return processAttributeUpdaterOperation(operation, timer);
                });
    }
@ Override public CompletableFuture < Void > append ( String streamSegmentName , byte [ ] data , Collection < AttributeUpdate > attributeUpdates , Duration timeout ) { ensureRunning ( ) ; TimeoutTimer timer = new TimeoutTimer ( timeout ) ; logRequest ( "append" , streamSegmentName , data . length ) ; this . metrics . append ( ) ; return this . metadataStore . getOrAssignSegmentId ( streamSegmentName , timer . getRemaining ( ) , streamSegmentId -> { StreamSegmentAppendOperation operation = new StreamSegmentAppendOperation ( streamSegmentId , data , attributeUpdates ) ; return processAttributeUpdaterOperation ( operation , timer ) ; } ) ; }
region StreamSegmentStore Implementation