in src/main/java/org/apache/cassandra/sidecar/routes/sstableuploads/SSTableUploadHandler.java [162:196]
private Future<SSTableUploadRequest> validateKeyspaceAndTable(String host,
SSTableUploadRequest request)
{
ExecutorPools.TaskExecutorPool pool = executorPools.service();
return pool.<Metadata>executeBlocking(promise -> {
CassandraAdapterDelegate delegate = metadataFetcher.delegate(host);
Metadata metadata = delegate.metadata();
if (metadata == null)
{
promise.fail(cassandraServiceUnavailable());
}
else
{
promise.complete(metadata);
}
})
.compose(metadata -> {
KeyspaceMetadata keyspaceMetadata = metadata.getKeyspace(request.keyspace());
if (keyspaceMetadata == null)
{
String message = String.format("Invalid keyspace '%s' supplied", request.keyspace());
logger.error(message);
return Future.failedFuture(wrapHttpException(HttpResponseStatus.BAD_REQUEST, message));
}
if (keyspaceMetadata.getTable(request.tableName()) == null)
{
String message = String.format("Invalid table name '%s' supplied for keyspace '%s'",
request.tableName(), request.keyspace());
logger.error(message);
return Future.failedFuture(wrapHttpException(HttpResponseStatus.BAD_REQUEST, message));
}
return Future.succeededFuture(request);
});
}