You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by si...@apache.org on 2020/11/08 08:44:33 UTC

[pulsar] branch master updated: fix Double-Checked locking using volatile (#8475)

This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 26fd380  fix Double-Checked locking using volatile (#8475)
26fd380 is described below

commit 26fd38009ef6b3746f3072ce156a9e83c882e0d5
Author: feynmanlin <fe...@tencent.com>
AuthorDate: Sun Nov 8 16:44:18 2020 +0800

    fix Double-Checked locking using volatile (#8475)
    
    
    
    
    
    
    ```java
    private void createSystemTopicFactoryIfNeeded() {
            if (namespaceEventsSystemTopicFactory == null) {
                synchronized (this) {
                    if (namespaceEventsSystemTopicFactory == null) {
                        try {
                            namespaceEventsSystemTopicFactory = new NamespaceEventsSystemTopicFactory(pulsarService.getClient());
                        } catch (PulsarServerException e) {
                            log.error("Create namespace event system topic factory error.", e);
                        }
                    }
                }
            }
        }
    ```
    
    The creation of `namespaceEventsSystemTopicFactory` uses double-check locking, but does not add volatile
---
 .../pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java
index 1f10827..2627f4d 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java
@@ -53,7 +53,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesService {
 
     private final PulsarService pulsarService;
-    private NamespaceEventsSystemTopicFactory namespaceEventsSystemTopicFactory;
+    private volatile NamespaceEventsSystemTopicFactory namespaceEventsSystemTopicFactory;
 
     private final Map<TopicName, TopicPolicies> policiesCache = new ConcurrentHashMap<>();