Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 04B3B200C6A for ; Wed, 19 Apr 2017 22:28:15 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 034F6160BAA; Wed, 19 Apr 2017 20:28:15 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 49FE0160B9C for ; Wed, 19 Apr 2017 22:28:14 +0200 (CEST) Received: (qmail 78179 invoked by uid 500); 19 Apr 2017 20:28:13 -0000 Mailing-List: contact commits-help@geode.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.apache.org Delivered-To: mailing list commits@geode.apache.org Received: (qmail 78170 invoked by uid 99); 19 Apr 2017 20:28:13 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 19 Apr 2017 20:28:13 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 3F396E0885; Wed, 19 Apr 2017 20:28:13 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: klund@apache.org To: commits@geode.apache.org Date: Wed, 19 Apr 2017 20:28:14 -0000 Message-Id: <01d81533d3444224a5d03173a159d69d@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [2/2] geode git commit: 2632: fix up getCache synchronization in AutoBalancer archived-at: Wed, 19 Apr 2017 20:28:15 -0000 2632: fix up getCache synchronization in AutoBalancer Project: http://git-wip-us.apache.org/repos/asf/geode/repo Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/08106d33 Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/08106d33 Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/08106d33 Branch: refs/heads/feature/GEODE-2632-4 Commit: 08106d3305c8b3179e2e6a9055754a5452d5080f Parents: c44cc06 Author: Kirk Lund Authored: Wed Apr 19 13:26:36 2017 -0700 Committer: Kirk Lund Committed: Wed Apr 19 13:26:36 2017 -0700 ---------------------------------------------------------------------- .../apache/geode/cache/util/AutoBalancer.java | 21 ++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/geode/blob/08106d33/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java ---------------------------------------------------------------------- diff --git a/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java b/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java index ab8b5b0..2965f7f 100644 --- a/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java +++ b/geode-rebalancer/src/main/java/org/apache/geode/cache/util/AutoBalancer.java @@ -25,12 +25,13 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; -import org.apache.geode.annotations.Experimental; import org.apache.logging.log4j.Logger; import org.springframework.scheduling.support.CronSequenceGenerator; import org.apache.geode.GemFireConfigException; +import org.apache.geode.annotations.Experimental; import org.apache.geode.cache.CacheClosedException; import org.apache.geode.cache.Declarable; import org.apache.geode.cache.GemFireCache; @@ -344,14 +345,14 @@ public class AutoBalancer implements Declarable { static class GeodeCacheFacade implements CacheOperationFacade { private final AtomicBoolean isLockAcquired = new AtomicBoolean(false); - private InternalCache cache; + private final AtomicReference cacheRef = new AtomicReference(); public GeodeCacheFacade() { this(null); } public GeodeCacheFacade(InternalCache cache) { - this.cache = cache; + this.cacheRef.set(cache); } @Override @@ -443,16 +444,16 @@ public class AutoBalancer implements Declarable { } InternalCache getCache() { - if (cache == null) { + if (cacheRef.get() == null) { synchronized (this) { - if (cache == null) { - cache = GemFireCacheImpl.getInstance(); - if (cache == null) { - throw new IllegalStateException("Missing cache instance."); - } - } + cacheRef.set(GemFireCacheImpl.getInstance()); } } + + InternalCache cache = cacheRef.get(); + if (cache == null) { + throw new IllegalStateException("Missing cache instance."); + } if (cache.isClosed()) { throw new CacheClosedException(); }