I reviewed the Pulsar code in question, it logs the exception directly before completing the future with it.
consumerSubscribedFuture.thenRun(() -> readerFuture.complete(reader)).exceptionally(ex -> {
log.warn("[{}] Failed to get create topic reader", topic, ex);
readerFuture.completeExceptionally(ex);
return null;
There's probably little you can do here.