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 <[email protected]>
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
[email protected].