apache/pulsar · error · RestException

partitionException.get().getMessage()

Error message

partitionException.get().getMessage()

What it means

After resetting a subscription cursor to a timestamp across all partitions, at least one partition failed to reset; the aggregated failure cause is propagated to the caller as the partitionException message.

Source

Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java:2308

                                    .attr("topicNamePartition", topicNamePartition)
                                    .attr("subscription", subName)
                                    .attr("time", timestamp)
                                    .exception(e)
                                    .log("Failed to reset cursor on subscription to time");
                            future.completeExceptionally(e);
                        }
                    }

                    return future.whenComplete((r, ex) -> {
                        // report an error to user if unable to reset for all partitions
                        if (failureCount.get() == numPartitions) {
                            log.warn()
                                    .attr("topic", topicName)
                                    .attr("subscription", subName)
                                    .attr("time", timestamp)
                                    .attr("get", partitionException.get())
                                    .log("Failed to reset cursor on subscription to time");
                            throw new RestException(Status.PRECONDITION_FAILED, partitionException.get().getMessage());
                        } else if (failureCount.get() > 0) {
                            log.warn()
                                    .attr("topic", topicName)
                                    .attr("subscription", subName)
                                    .attr("time", timestamp)
                                    .attr("get", partitionException.get())
                                    .log("Partial errors for reset cursor on subscription to time");
                        }
                    });
                } else {
                    return internalResetCursorForNonPartitionedTopic(subName, timestamp, authoritative);
                }
            });
    }

    private CompletableFuture<Void> internalResetCursorForNonPartitionedTopic(String subName, long timestamp,
                                       boolean authoritative) {
        return validateTopicOwnershipAsync(topicName, authoritative)

View on GitHub (pinned to 820761864e)

Solutions

  1. Inspect the inner exception for the failing partition and retry that partition's reset
  2. Verify each partition exists and its ledger is readable
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java:2308 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/pulsar@820761864e (2026-09-06). Data as JSON: /api/errors/4b61508aa5c064d9. Report an issue: GitHub.