You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2014/11/12 19:44:47 UTC

svn commit: r1638936 - in /qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb: AbstractBDBMessageStore.java BDBUtils.java StandardEnvironmentFacade.java replication/ReplicatedEnvironmentFacade.java

Author: kwall
Date: Wed Nov 12 18:44:36 2014
New Revision: 1638936

URL: http://svn.apache.org/r1638936
Log:
QPID-6224: [Java Broker] BDB / BDB-HA VH now cleans all log files and performs a BDB checkpoint.

* Cleaner thread is disabled whilst manually clean is in operation.

Modified:
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java?rev=1638936&r1=1638935&r2=1638936&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java Wed Nov 12 18:44:36 2014
@@ -32,12 +32,9 @@ import java.util.UUID;
 
 import com.sleepycat.bind.tuple.ByteBinding;
 import com.sleepycat.bind.tuple.LongBinding;
-import com.sleepycat.je.CheckpointConfig;
 import com.sleepycat.je.Cursor;
 import com.sleepycat.je.Database;
 import com.sleepycat.je.DatabaseEntry;
-import com.sleepycat.je.DatabaseException;
-import com.sleepycat.je.EnvironmentConfig;
 import com.sleepycat.je.LockConflictException;
 import com.sleepycat.je.LockMode;
 import com.sleepycat.je.OperationStatus;
@@ -1030,21 +1027,7 @@ public abstract class AbstractBDBMessage
 
     private void reduceSizeOnDisk()
     {
-        getEnvironmentFacade().getEnvironment().getConfig().setConfigParam(EnvironmentConfig.ENV_RUN_CLEANER, "false");
-        boolean cleaned = false;
-        while (getEnvironmentFacade().getEnvironment().cleanLog() > 0)
-        {
-            cleaned = true;
-        }
-        if (cleaned)
-        {
-            CheckpointConfig force = new CheckpointConfig();
-            force.setForce(true);
-            getEnvironmentFacade().getEnvironment().checkpoint(force);
-        }
-
-
-        getEnvironmentFacade().getEnvironment().getConfig().setConfigParam(EnvironmentConfig.ENV_RUN_CLEANER, "true");
+        BDBUtils.runCleaner(getEnvironmentFacade().getEnvironment());
     }
 
     private long getSizeOnDisk()

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java?rev=1638936&r1=1638935&r2=1638936&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java Wed Nov 12 18:44:36 2014
@@ -19,15 +19,20 @@
 
 package org.apache.qpid.server.store.berkeleydb;
 
+import com.sleepycat.je.CheckpointConfig;
 import com.sleepycat.je.Cursor;
 import com.sleepycat.je.DatabaseConfig;
-import com.sleepycat.je.DatabaseException;
+import com.sleepycat.je.Environment;
+import com.sleepycat.je.EnvironmentConfig;
 import com.sleepycat.je.Transaction;
+import org.apache.log4j.Logger;
 
 import org.apache.qpid.server.store.StoreException;
 
 public class BDBUtils
 {
+    private static final Logger LOGGER = Logger.getLogger(BDBUtils.class);
+
     public static final DatabaseConfig DEFAULT_DATABASE_CONFIG = new DatabaseConfig().setTransactional(true).setAllowCreate(true);
 
     public static void closeCursorSafely(Cursor cursor, final EnvironmentFacade environmentFacade) throws StoreException
@@ -61,4 +66,46 @@ public class BDBUtils
             environmentFacade.handleDatabaseException("Cannot abort transaction", e);
         }
     }
+
+    public synchronized static void runCleaner(final Environment environment)
+    {
+        boolean cleanerWasRunning = Boolean.parseBoolean(environment.getConfig().getConfigParam(EnvironmentConfig.ENV_RUN_CLEANER));
+
+        try
+        {
+            if (cleanerWasRunning)
+            {
+                environment.getConfig().setConfigParam(EnvironmentConfig.ENV_RUN_CLEANER, Boolean.FALSE.toString());
+            }
+
+            if (LOGGER.isDebugEnabled())
+            {
+                LOGGER.debug("Cleaning logs");
+            }
+
+            boolean cleaned = false;
+            while (environment.cleanLog() > 0)
+            {
+                cleaned = true;
+            }
+            if (cleaned)
+            {
+                LOGGER.debug("Cleaned log");
+
+                CheckpointConfig force = new CheckpointConfig();
+                force.setForce(true);
+                environment.checkpoint(force);
+
+                LOGGER.debug("Checkpoint force complete");
+            }
+        }
+        finally
+        {
+            if (cleanerWasRunning)
+            {
+                environment.getConfig().setConfigParam(EnvironmentConfig.ENV_RUN_CLEANER, Boolean.TRUE.toString());
+            }
+        }
+
+    }
 }

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java?rev=1638936&r1=1638935&r2=1638936&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java Wed Nov 12 18:44:36 2014
@@ -256,7 +256,7 @@ public class StandardEnvironmentFacade i
             // not get a chance to finish.
             try
             {
-                _environment.cleanLog();
+                BDBUtils.runCleaner(_environment);
             }
             finally
             {

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java?rev=1638936&r1=1638935&r2=1638936&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java Wed Nov 12 18:44:36 2014
@@ -70,6 +70,7 @@ import com.sleepycat.je.utilint.PropUtil
 import com.sleepycat.je.utilint.VLSN;
 import org.apache.log4j.Logger;
 import org.apache.qpid.server.store.StoreException;
+import org.apache.qpid.server.store.berkeleydb.BDBUtils;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
 import org.codehaus.jackson.map.ObjectMapper;
 
@@ -919,7 +920,7 @@ public class ReplicatedEnvironmentFacade
         {
             if (_environment.isValid())
             {
-                _environment.cleanLog();
+                BDBUtils.runCleaner(_environment);
             }
         }
         finally



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org