You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by xi...@apache.org on 2023/09/04 07:16:35 UTC
[pulsar] 01/02: [fix][meta] Fix deadlock in AutoRecovery. (#21010)
This is an automated email from the ASF dual-hosted git repository.
xiangying pushed a commit to branch branch-2.11
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit a6ed1fe079f70ae744d680bfc61bfafc3023b26d
Author: xiangying <19...@qq.com>
AuthorDate: Mon Sep 4 15:04:01 2023 +0800
[fix][meta] Fix deadlock in AutoRecovery. (#21010)
(cherry picked from commit deeb8a2bfe8de603c119172fb3cb8c5a5ffbd10a)
---
.../client/impl/MessageChunkingDeduplicationTest.java | 2 +-
.../java/org/apache/pulsar/compaction/CompactorTest.java | 1 -
.../bookkeeper/PulsarLedgerUnderreplicationManager.java | 14 ++++++++------
3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageChunkingDeduplicationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageChunkingDeduplicationTest.java
index 5e590414132..d3f23a8f9ba 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageChunkingDeduplicationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageChunkingDeduplicationTest.java
@@ -1,4 +1,4 @@
-/*
+/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java
index 0e13edf00a1..334f30b2327 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java
@@ -31,7 +31,6 @@ import java.util.Map;
import java.util.Optional;
import java.util.Random;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import lombok.Cleanup;
diff --git a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/PulsarLedgerUnderreplicationManager.java b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/PulsarLedgerUnderreplicationManager.java
index 18569ce8057..f58a2752180 100644
--- a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/PulsarLedgerUnderreplicationManager.java
+++ b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/PulsarLedgerUnderreplicationManager.java
@@ -978,11 +978,13 @@ public class PulsarLedgerUnderreplicationManager implements LedgerUnderreplicati
@Override
public void notifyUnderReplicationLedgerChanged(BookkeeperInternalCallbacks.GenericCallback<Void> cb)
throws ReplicationException.UnavailableException {
- log.debug("notifyUnderReplicationLedgerChanged()");
- store.registerListener(e -> {
- if (e.getType() == NotificationType.Deleted && ID_EXTRACTION_PATTERN.matcher(e.getPath()).find()) {
- cb.operationComplete(0, null);
- }
- });
+ //The store listener callback executor is metadata-store executor,
+ //in cb.operationComplete(0, null), it will get all underreplication ledgers from metadata-store, it's sync
+ //operation. So it's a deadlock.
+// store.registerListener(e -> {
+// if (e.getType() == NotificationType.Deleted && ID_EXTRACTION_PATTERN.matcher(e.getPath()).find()) {
+// cb.operationComplete(0, null);
+// }
+// });
}
}