public Future close()

in server/src/main/java/org/apache/cassandra/sidecar/server/Server.java [154:201]


    public Future<Void> close()
    {
        LOGGER.info("Stopping Cassandra Sidecar");
        deployedServerVerticles.clear();
        List<Future<Void>> closingFutures = new ArrayList<>();
        closingFutures.add(notifyServerStopping(null));
        closingFutures.add(Future.future(p -> {
            sidecarClientProvider.close();
            p.complete();
        }));
        instancesMetadata.instances().forEach(instance -> {
            Promise<Void> closingFutureForInstance = Promise.promise();
            executorPools.internal()
                         .runBlocking(() -> {
                             try
                             {
                                 instance.delegate().close();
                             }
                             catch (Exception e)
                             {
                                 LOGGER.error("Failed to close delegate", e);
                                 closingFutureForInstance.tryFail(e);
                             }
                             finally
                             {
                                 closingFutureForInstance.tryComplete(null);
                             }
                         });
            closingFutures.add(closingFutureForInstance.future());
        });

        return Future.all(closingFutures)
                     .onSuccess(ignored -> LOGGER.debug("Closed Cassandra adapters"))
                     .transform(v -> {
                        LOGGER.debug("Closing PeriodicTaskExecutor");
                        return periodicTaskExecutor.close();
                     })
                     .transform(v -> {
                         LOGGER.debug("Closing executor pools");
                         return executorPools.close();
                     })
                     .transform(v -> {
                         LOGGER.debug("Closing vertx");
                         return vertx.close();
                     })
                     .onFailure(t -> LOGGER.error("Failed to gracefully shutdown Cassandra Sidecar", t))
                     .onSuccess(f -> LOGGER.info("Successfully stopped Cassandra Sidecar"));
    }