use of io.pravega.shared.controller.tracing.RPCTracingTags.GET_CURRENT_SEGMENTS_KEY_VALUE_TABLE in project pravega by pravega.
the class ControllerImpl method getCurrentSegmentsForKeyValueTable.
@Override
public CompletableFuture<KeyValueTableSegments> getCurrentSegmentsForKeyValueTable(String scope, String kvtName) {
Exceptions.checkNotClosed(closed.get(), this);
Exceptions.checkNotNullOrEmpty(scope, "scope");
Exceptions.checkNotNullOrEmpty(kvtName, "stream");
long traceId = LoggerHelpers.traceEnter(log, "getCurrentSegmentsForKeyValueTable", scope, kvtName);
final long requestId = requestIdGenerator.get();
final CompletableFuture<SegmentRanges> result = this.retryConfig.runAsync(() -> {
RPCAsyncCallback<SegmentRanges> callback = new RPCAsyncCallback<>(traceId, "getCurrentSegmentsKeyValueTable", scope, kvtName);
new ControllerClientTagger(client, timeoutMillis).withTag(requestId, GET_CURRENT_SEGMENTS_KEY_VALUE_TABLE, scope, kvtName).getCurrentSegmentsKeyValueTable(ModelHelper.createKeyValueTableInfo(scope, kvtName), callback);
return callback.getFuture();
}, this.executor);
return result.thenApplyAsync(ranges -> {
log.debug(requestId, "Received the following data from the controller {}", ranges.getSegmentRangesList());
NavigableMap<Double, SegmentWithRange> rangeMap = new TreeMap<>();
for (SegmentRange r : ranges.getSegmentRangesList()) {
Preconditions.checkState(r.getMinKey() <= r.getMaxKey(), "Min keyrange %s was not less than maximum keyRange %s for segment %s", r.getMinKey(), r.getMaxKey(), r.getSegmentId());
rangeMap.put(r.getMaxKey(), new SegmentWithRange(encode(r.getSegmentId()), r.getMinKey(), r.getMaxKey()));
}
return new KeyValueTableSegments(rangeMap);
}, this.executor).whenComplete((x, e) -> {
if (e != null) {
log.warn(requestId, "getCurrentSegmentsForKeyValueTable for {}/{} failed: ", scope, kvtName, e);
}
LoggerHelpers.traceLeave(log, "getCurrentSegmentsForKeyValueTable", traceId);
});
}
Aggregations