This is an automated email from the ASF dual-hosted git repository. kturner pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/fluo.git
The following commit(s) were added to refs/heads/master by this push: new 1ced4d7 Fixes #1011 prevent multiple calls to SyncCommitObserver (#1013) 1ced4d7 is described below commit 1ced4d7f3582908dc16be094656e752c1d45488f Author: Abhijit Ranalkar <abhijitranal...@gmail.com> AuthorDate: Tue Feb 13 01:47:19 2018 +0530 Fixes #1011 prevent multiple calls to SyncCommitObserver (#1013) --- .../org/apache/fluo/core/async/SyncCommitObserver.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/core/src/main/java/org/apache/fluo/core/async/SyncCommitObserver.java b/modules/core/src/main/java/org/apache/fluo/core/async/SyncCommitObserver.java index 314859e..c2b21dc 100644 --- a/modules/core/src/main/java/org/apache/fluo/core/async/SyncCommitObserver.java +++ b/modules/core/src/main/java/org/apache/fluo/core/async/SyncCommitObserver.java @@ -16,7 +16,9 @@ package org.apache.fluo.core.async; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicBoolean; +import com.google.common.base.Preconditions; import org.apache.fluo.api.exceptions.CommitException; import org.apache.fluo.api.exceptions.FluoException; import org.apache.fluo.core.exceptions.AlreadyAcknowledgedException; @@ -28,33 +30,44 @@ public class SyncCommitObserver implements AsyncCommitObserver { private volatile boolean aacked = false; private volatile Exception error = null; private volatile String commitFailMsg = ""; + private AtomicBoolean isMethodCalled = new AtomicBoolean(false); + private static final String METHOD_CALLED_VALIDATION_CHECK_MESSAGE = + "One of the methods committed,failed,alreadyAcknowledged,commitFailed" + + " was already called"; @Override public void committed() { + Preconditions.checkState(isMethodCalled.compareAndSet(false, true), + METHOD_CALLED_VALIDATION_CHECK_MESSAGE); committed = Boolean.TRUE; cdl.countDown(); } @Override public void failed(Throwable t) { + Preconditions.checkState(isMethodCalled.compareAndSet(false, true), + METHOD_CALLED_VALIDATION_CHECK_MESSAGE); error = (Exception) t; cdl.countDown(); } @Override public void alreadyAcknowledged() { + Preconditions.checkState(isMethodCalled.compareAndSet(false, true), + METHOD_CALLED_VALIDATION_CHECK_MESSAGE); aacked = true; cdl.countDown(); } @Override public void commitFailed(String msg) { + Preconditions.checkState(isMethodCalled.compareAndSet(false, true), + METHOD_CALLED_VALIDATION_CHECK_MESSAGE); committed = false; commitFailMsg = msg; cdl.countDown(); } - public void waitForCommit() { try { cdl.await(); -- To stop receiving notification emails like this one, please contact ktur...@apache.org.