You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2012/10/31 21:40:56 UTC

svn commit: r1404338 - in /activemq/activemq-apollo/trunk: ./ apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/ apollo-leveldb/src/test/scala/org/apache/activemq/apollo/broker/store/leveldb/

Author: chirino
Date: Wed Oct 31 20:40:55 2012
New Revision: 1404338

URL: http://svn.apache.org/viewvc?rev=1404338&view=rev
Log:
Use the new suspend/resume compaction calls on leveldb-api 0.4. This avoids us needing close/open db to do checkpoints.  Should slightly improve perf since the block cache is not thrown away.  The index stats displayed will also be more meaningful.

Modified:
    activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/HelperTrait.scala
    activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/LevelDBClient.scala
    activemq/activemq-apollo/trunk/apollo-leveldb/src/test/scala/org/apache/activemq/apollo/broker/store/leveldb/PureJavaLevelDBStoreTest.scala
    activemq/activemq-apollo/trunk/pom.xml

Modified: activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/HelperTrait.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/HelperTrait.scala?rev=1404338&r1=1404337&r2=1404338&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/HelperTrait.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/HelperTrait.scala Wed Oct 31 20:40:55 2012
@@ -175,8 +175,8 @@ object HelperTrait {
         func
       } finally {
         val duration = System.nanoTime() - start
-        // If it takes longer than 50 ms..
-        if( duration > 1000000*50 ) {
+        // If it takes longer than 100 ms..
+        if( duration > 1000000*100 ) {
           compact_needed = true
         }
       }

Modified: activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/LevelDBClient.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/LevelDBClient.scala?rev=1404338&r1=1404337&r2=1404338&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/LevelDBClient.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-leveldb/src/main/scala/org/apache/activemq/apollo/broker/store/leveldb/LevelDBClient.scala Wed Oct 31 20:40:55 2012
@@ -604,12 +604,11 @@ class LevelDBClient(store: LevelDBStore)
 
   def stop() = {
     // this blocks until all io completes..
-    // Suspend also deletes the index.
-    suspend()
-
-    if (log != null) {
-      log.close
-    }
+    snapshot_rw_lock.writeLock().lock()
+    store_log_refs
+    index.put(dirty_index_key, FALSE, new WriteOptions().sync(true))
+    index.close
+    log.close
     copy_dirty_index_to_snapshot
     log = null
     unlock_store
@@ -639,7 +638,7 @@ class LevelDBClient(store: LevelDBStore)
     // Close the index so that it's files are not changed async on us.
     store_log_refs
     index.put(dirty_index_key, FALSE, new WriteOptions().sync(true))
-    index.close
+    index.db.suspendCompactions
   }
 
   /**
@@ -649,7 +648,7 @@ class LevelDBClient(store: LevelDBStore)
   def resume() = {
     // re=open it..
     retry {
-      index = new RichDB(factory.open(dirty_index_file, index_options));
+      index.db.resumeCompactions
       index.put(dirty_index_key, TRUE)
     }
     snapshot_rw_lock.writeLock().unlock()
@@ -737,16 +736,18 @@ class LevelDBClient(store: LevelDBStore)
   }
 
   def purge() = {
-    suspend()
+    snapshot_rw_lock.writeLock().lock()
     try {
       log.close
+      index.close
       directory.list_files.foreach(_.recursive_delete)
       log_refs.clear()
     } finally {
       retry {
+        index = new RichDB(factory.open(dirty_index_file, index_options))
         log.open
       }
-      resume()
+      snapshot_rw_lock.writeLock().unlock()
     }
   }
 

Modified: activemq/activemq-apollo/trunk/apollo-leveldb/src/test/scala/org/apache/activemq/apollo/broker/store/leveldb/PureJavaLevelDBStoreTest.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-leveldb/src/test/scala/org/apache/activemq/apollo/broker/store/leveldb/PureJavaLevelDBStoreTest.scala?rev=1404338&r1=1404337&r2=1404338&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-leveldb/src/test/scala/org/apache/activemq/apollo/broker/store/leveldb/PureJavaLevelDBStoreTest.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-leveldb/src/test/scala/org/apache/activemq/apollo/broker/store/leveldb/PureJavaLevelDBStoreTest.scala Wed Oct 31 20:40:55 2012
@@ -17,13 +17,13 @@ package org.apache.activemq.apollo.broke
  * limitations under the License.
  */
 
-import org.apache.activemq.apollo.broker.store.{Store, StoreFunSuiteSupport}
+import org.apache.activemq.apollo.broker.store.{StoreTests, Store, StoreFunSuiteSupport}
 import org.apache.activemq.apollo.broker.store.leveldb.dto.LevelDBStoreDTO
 
 /**
  * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
  */
-class PureJavaLevelDBStoreTest extends StoreFunSuiteSupport {
+class PureJavaLevelDBStoreTest extends StoreTests {
 
   def create_store(flushDelay: Long): Store = {
     new LevelDBStore({

Modified: activemq/activemq-apollo/trunk/pom.xml
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/pom.xml?rev=1404338&r1=1404337&r2=1404338&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/pom.xml (original)
+++ activemq/activemq-apollo/trunk/pom.xml Wed Oct 31 20:40:55 2012
@@ -103,9 +103,9 @@
     
     <bdb-version>5.0.34</bdb-version>
 
-    <leveldb-api-version>0.2</leveldb-api-version>
-    <leveldb-version>0.2</leveldb-version>
-    <leveldbjni-version>1.3</leveldbjni-version>
+    <leveldb-api-version>0.4</leveldb-api-version>
+    <leveldb-version>0.4</leveldb-version>
+    <leveldbjni-version>1.4</leveldbjni-version>
 
     <jasypt-version>1.6</jasypt-version>