use of io.atomix.primitive.PrimitiveException.Unavailable in project atomix by atomix.
the class PrimaryBackupClient method getPrimitives.
@Override
public CompletableFuture<Set<String>> getPrimitives(PrimitiveType primitiveType) {
CompletableFuture<Set<String>> future = new CompletableFuture<>();
MetadataRequest request = MetadataRequest.request(primitiveType.id());
threadContext.execute(() -> {
Member primary = primaryElection.getTerm().join().primary();
if (primary == null) {
future.completeExceptionally(new Unavailable());
return;
}
protocol.metadata(primary.nodeId(), request).whenCompleteAsync((response, error) -> {
if (error == null) {
if (response.status() == Status.OK) {
future.complete(response.primitiveNames());
} else {
future.completeExceptionally(new PrimitiveException.Unavailable());
}
} else {
future.completeExceptionally(new PrimitiveException.Unavailable());
}
}, threadContext);
});
return future;
}
Aggregations