in gremlin-client/src/main/java/org/apache/tinkerpop/gremlin/driver/GremlinClient.java [279:326]
public CompletableFuture<ResultSet> submitAsync(Bytecode bytecode, RequestOptions options) {
long start = System.currentTimeMillis();
UUID traceId = options.getOverrideRequestId().isPresent() ? options.getOverrideRequestId().get() : UUID.randomUUID();
logger.trace("_traceId: {}", traceId);
RequestOptions.Builder newOptions = RequestOptions.build();
newOptions.overrideRequestId(traceId);
if (options.getAliases().isPresent()) {
Map<String, String> aliases = options.getAliases().get();
for (Map.Entry<String, String> alias : aliases.entrySet()) {
newOptions.addAlias(alias.getKey(), alias.getValue());
}
}
if (options.getBatchSize().isPresent()) {
newOptions.batchSize(options.getBatchSize().get());
}
if (options.getTimeout().isPresent()) {
newOptions.timeout(options.getTimeout().get());
}
if (options.getLanguage().isPresent()) {
newOptions.language(options.getLanguage().get());
}
if (options.getUserAgent().isPresent()) {
newOptions.userAgent(options.getUserAgent().get());
}
if (options.getParameters().isPresent()) {
Map<String, Object> params = options.getParameters().get();
for (Map.Entry<String, Object> param : params.entrySet()) {
newOptions.addParameter(param.getKey(), param.getValue());
}
}
CompletableFuture<ResultSet> future = super.submitAsync(bytecode, newOptions.create());
EndpointClientCollection endpointClients = endpointClientCollection.get();
if (endpointClients != null){
return future.whenComplete((results, throwable) -> {
long durationMillis = System.currentTimeMillis() - start;
endpointClients.registerDurationForTraceId(traceId, durationMillis, throwable);
});
} else {
return future;
}
}