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