void close()

in gremlin-client/src/main/java/org/apache/tinkerpop/gremlin/driver/EndpointClientCollection.java [197:237]


    void close(MetricsHandler handler) {

        if (!collectMetrics) {
            return;
        }

        allowSubmitMetrics = false;

        if (handler != null && executorService != null){

            Future<?> future = executorService.submit(() -> {
                long duration = System.currentTimeMillis() - startMillis;

                ConnectionMetrics conMetrics = new ConnectionMetrics(
                        duration,
                        connectionMetrics.totalConnectionAttempts(),
                        connectionMetrics.metrics());

                RequestMetrics reqMetrics = new RequestMetrics(
                        duration,
                        requestMetrics.totalRequests(),
                        requestMetrics.failedRequests(),
                        requestMetrics.droppedRequests(),
                        requestMetrics.skippedResponses(),
                        requestMetrics.metrics());

                handler.onMetricsPublished(conMetrics, reqMetrics);
            });

            try {
                future.get(5, TimeUnit.SECONDS);
            } catch (InterruptedException | ExecutionException | TimeoutException e) {
                logger.error("Error while publishing metrics", e);
            }

        }

        if (executorService != null) {
            executorService.shutdownNow();
        }
    }