You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2021/08/10 06:30:29 UTC

[GitHub] [pulsar] eolivelli commented on a change in pull request #11494: Pending ack set managed ledger config true

eolivelli commented on a change in pull request #11494:
URL: https://github.com/apache/pulsar/pull/11494#discussion_r685727047



##########
File path: pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/impl/MLPendingAckStoreProvider.java
##########
@@ -47,40 +48,66 @@
                     new TransactionPendingAckStoreProviderException("The subscription is null."));
             return pendingAckStoreFuture;
         }
-
         PersistentTopic originPersistentTopic = (PersistentTopic) subscription.getTopic();
         String pendingAckTopicName = MLPendingAckStore
                 .getTransactionPendingAckStoreSuffix(originPersistentTopic.getName(), subscription.getName());
-
         originPersistentTopic.getBrokerService().getManagedLedgerFactory()
-                .asyncOpen(TopicName.get(pendingAckTopicName).getPersistenceNamingEncoding(),
-                        originPersistentTopic.getManagedLedger().getConfig(),
-                        new AsyncCallbacks.OpenLedgerCallback() {
-                            @Override
-                            public void openLedgerComplete(ManagedLedger ledger, Object ctx) {
-                                ledger.asyncOpenCursor(MLPendingAckStore.getTransactionPendingAckStoreCursorName(),
-                                        InitialPosition.Earliest, new AsyncCallbacks.OpenCursorCallback() {
-                                            @Override
-                                            public void openCursorComplete(ManagedCursor cursor, Object ctx) {
-                                                pendingAckStoreFuture
-                                                        .complete(new MLPendingAckStore(ledger, cursor,
-                                                                subscription.getCursor()));
-                                            }
+                .asyncExists(TopicName.get(pendingAckTopicName)
+                        .getPersistenceNamingEncoding()).thenAccept(exist -> {
+            TopicName topicName;
+            if (exist) {
+                topicName = TopicName.get(pendingAckTopicName);
+            } else {
+                topicName = TopicName.get(originPersistentTopic.getName());
+            }
+            originPersistentTopic.getBrokerService()
+                    .getManagedLedgerConfig(topicName).thenAccept(config -> {
+                config.setCreateIfMissing(true);
+                originPersistentTopic.getBrokerService().getManagedLedgerFactory()
+                        .asyncOpen(TopicName.get(pendingAckTopicName).getPersistenceNamingEncoding(),
+                                config, new AsyncCallbacks.OpenLedgerCallback() {
+                                    @Override
+                                    public void openLedgerComplete(ManagedLedger ledger, Object ctx) {
+                                        ledger.asyncOpenCursor(
+                                                MLPendingAckStore.getTransactionPendingAckStoreCursorName(),
+                                                InitialPosition.Earliest, new AsyncCallbacks.OpenCursorCallback() {
+                                                    @Override
+                                                    public void openCursorComplete(ManagedCursor cursor, Object ctx) {
+                                                        pendingAckStoreFuture
+                                                                .complete(new MLPendingAckStore(ledger, cursor,
+                                                                        subscription.getCursor()));
+                                                        log.info("{},{} open MLPendingAckStore cursor success",

Review comment:
       probably this logger should be moved to level `debug`




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org