{"record":{"id":"e63af987de8c393d","repo":"apache/pulsar","slug":"topic-partitions-were-not-yet-created","errorCode":null,"errorMessage":"Topic partitions were not yet created","messagePattern":"Topic partitions were not yet created","errorType":"http","errorClass":"RestException","httpStatus":404,"severity":"error","filePath":"pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java","lineNumber":4718,"sourceCode":"        if (!topicName.isPartitioned()) {\n            return FutureUtil.failedFuture(new RestException(Status.NOT_FOUND,\n                    getTopicNotFoundErrorMessage(topicName.toString())));\n        }\n\n        return getPartitionedTopicMetadataAsync(\n                TopicName.get(topicName.getPartitionedTopicName()), false, false)\n                .thenAccept(partitionedTopicMetadata -> {\n                    if (partitionedTopicMetadata == null || partitionedTopicMetadata.partitions == 0) {\n                        final String topicErrorType = partitionedTopicMetadata\n                                == null ? \"has no metadata\" : \"has zero partitions\";\n                        throw new RestException(Status.NOT_FOUND, String.format(\n                                \"Partitioned Topic not found: %s %s\", topicName.toString(), topicErrorType));\n                    }\n                })\n                .thenCompose(__ -> internalGetListAsync(Optional.empty(), null))\n                .thenApply(topics -> {\n                    if (!topics.contains(topicName.toString())) {\n                        throw new RestException(Status.NOT_FOUND, \"Topic partitions were not yet created\");\n                    }\n                    throw new RestException(Status.NOT_FOUND,\n                        getPartitionedTopicNotFoundErrorMessage(topicName.toString()));\n            });\n    }\n\n    /**\n     * Find the subscription or create it when automatic subscription creation is allowed.\n     */\n    private CompletableFuture<Subscription> findOrCreateSubscriptionAsync(String subName, PersistentTopic topic) {\n        Subscription subscription = topic.getSubscription(subName);\n        if (subscription != null) {\n            return CompletableFuture.completedFuture(subscription);\n        }\n\n        return pulsar().getBrokerService().isAllowAutoSubscriptionCreationAsync(topicName)\n                .thenCompose(isAllowed -> {\n                    Subscription existingSubscription = topic.getSubscription(subName);","sourceCodeStart":4700,"sourceCodeEnd":4736,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java#L4700-L4736","documentation":"The partitioned topic's metadata exists but its actual partitions have not been created yet (partitions == 0 or null metadata), so an operation requiring concrete partition topics fails; typically resolved by triggering partition creation or retrying.","triggerScenarios":"Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java:4718 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-run partition creation (update partitions) so actual partitions are materialized","Inspect broker logs for a failed earlier creation attempt"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"820761864ed8e2a7d2e52dd9763ad2ae117c1395","analyzedAt":"2026-09-06T00:14:20.138Z","contentChangedAt":"2026-09-06T00:14:20.138Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}