Author: kwall
Date: Mon Oct 20 16:13:16 2014
New Revision: 1633181

URL: http://svn.apache.org/r1633181
Log:
QPID-6169: [Java Broker] HA Prevent IllegalStateException possibility from 
remote state learner

* Prevents a race condition between a node becoming master and the desired 
durability being read from
 store and set on the environment.

Modified:
    
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/DatabasePinger.java

Modified: 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/DatabasePinger.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/DatabasePinger.java?rev=1633181&r1=1633180&r2=1633181&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/DatabasePinger.java
 (original)
+++ 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/DatabasePinger.java
 Mon Oct 20 16:13:16 2014
@@ -27,8 +27,9 @@ import com.sleepycat.bind.tuple.LongBind
 import com.sleepycat.je.Database;
 import com.sleepycat.je.DatabaseConfig;
 import com.sleepycat.je.DatabaseEntry;
-import com.sleepycat.je.DatabaseException;
+import com.sleepycat.je.Durability;
 import com.sleepycat.je.Transaction;
+import com.sleepycat.je.TransactionConfig;
 import org.apache.log4j.Logger;
 
 public class DatabasePinger
@@ -39,6 +40,16 @@ public class DatabasePinger
     private static final DatabaseConfig DATABASE_CONFIG =
             DatabaseConfig.DEFAULT.setAllowCreate(true).setTransactional(true);
     private static final int ID = 0;
+    private final TransactionConfig _pingTransactionConfig = new 
TransactionConfig();
+
+    public DatabasePinger()
+    {
+        // The ping merely needs to establish that the sufficient remote nodes 
are available,
+        // we don't need to await the data being written/synch'd
+        _pingTransactionConfig.setDurability(new 
Durability(Durability.SyncPolicy.NO_SYNC,
+                                                            
Durability.SyncPolicy.NO_SYNC,
+                                                            
Durability.ReplicaAckPolicy.SIMPLE_MAJORITY));
+    }
 
     public void pingDb(EnvironmentFacade facade)
     {
@@ -60,7 +71,7 @@ public class DatabasePinger
             Transaction txn = null;
             try
             {
-                txn = facade.beginTransaction();
+                txn = facade.getEnvironment().beginTransaction(null, 
_pingTransactionConfig);
                 db.put(txn, key, value);
                 txn.commit();
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to