private void processCreateSnapshotFailure()

in src/main/java/org/apache/cassandra/sidecar/routes/SnapshotsHandler.java [253:286]


    private void processCreateSnapshotFailure(Throwable cause, RoutingContext context, SnapshotRequest requestParams,
                                              SocketAddress remoteAddress, String host)
    {
        logger.error("SnapshotsHandler failed for request={}, remoteAddress={}, instance={}, method={}",
                     requestParams, remoteAddress, host, context.request().method(), cause);

        if (cause instanceof SnapshotAlreadyExistsException)
        {
            context.fail(wrapHttpException(HttpResponseStatus.CONFLICT, cause.getMessage()));
            return;
        }
        else if (cause instanceof NodeBootstrappingException)
        {
            // Cassandra does not allow taking snapshots while the node is JOINING the ring
            context.fail(wrapHttpException(HttpResponseStatus.SERVICE_UNAVAILABLE,
                                           "The Cassandra instance " + host + " is not available"));
        }
        else if (cause instanceof IllegalArgumentException)
        {
            if (StringUtils.contains(cause.getMessage(),
                                     "Keyspace " + requestParams.keyspace() + " does not exist") ||
                StringUtils.contains(cause.getMessage(),
                                     "Unknown keyspace/cf pair"))
            {
                context.fail(wrapHttpException(HttpResponseStatus.NOT_FOUND, cause.getMessage()));
            }
            else
            {
                context.fail(wrapHttpException(HttpResponseStatus.BAD_REQUEST, cause.getMessage()));
            }
            return;
        }
        context.fail(wrapHttpException(HttpResponseStatus.BAD_REQUEST, "Invalid request for " + requestParams));
    }