Author: chirino
Date: Tue Sep 23 10:01:59 2008
New Revision: 698244

URL: http://svn.apache.org/viewvc?rev=698244&view=rev
Log:
- Checking the amount of disk space used is now much faster and accurate.
- removed ref counting of journal files since that was un-used.
- Fixed NPE that would occur in the BTree when the getFirst/getLast was used 
and tree depth was > 1
- We now checkpoint and clean up at two different intervals.  We now checkpoint 
a much higher rate so that recover is much faster.
- Made recovery error handling more robust.


Added:
    
activemq/sandbox/kahadb/src/main/java/org/apache/kahadb/util/CommandLineSupport.java
Modified:
    
activemq/sandbox/kahadb/src/test/java/org/apache/kahadb/store/perf/KahaBulkLoadingTest.java

Added: 
activemq/sandbox/kahadb/src/main/java/org/apache/kahadb/util/CommandLineSupport.java
URL: 
http://svn.apache.org/viewvc/activemq/sandbox/kahadb/src/main/java/org/apache/kahadb/util/CommandLineSupport.java?rev=698244&view=auto
==============================================================================
--- 
activemq/sandbox/kahadb/src/main/java/org/apache/kahadb/util/CommandLineSupport.java
 (added)
+++ 
activemq/sandbox/kahadb/src/main/java/org/apache/kahadb/util/CommandLineSupport.java
 Tue Sep 23 10:01:59 2008
@@ -0,0 +1,115 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.kahadb.util;
+
+import java.util.ArrayList;
+
+/**
+ * Support utility that can be used to set the properties on any object
+ * using command line arguments.
+ * 
+ * @author <a href="http://hiramchirino.com";>Hiram Chirino</a>
+ */
+public class CommandLineSupport {
+       
+       /**
+        * Sets the properties of an object given the command line args.
+        * 
+        * if args contains: --ack-mode=AUTO --url=tcp://localhost:61616 
--persistent 
+        * 
+        * then it will try to call the following setters on the target object.
+        * 
+        * target.setAckMode("AUTO");
+        * target.setURL(new URI("tcp://localhost:61616") );
+        * target.setPersistent(true);
+        * 
+        * Notice the the proper conversion for the argument is determined by 
examining the 
+        * setter argument type.  
+        * 
+        * @param target the object that will have it's properties set
+        * @param args the command line options
+        * @return any arguments that are not valid options for the target
+        */
+       static public String[] setOptions(Object target, String []args) {
+               ArrayList rc = new ArrayList();
+               
+               for (int i = 0; i < args.length; i++) {
+                       if( args[i] == null )
+                               continue;
+                       
+                       if( args[i].startsWith("--") ) {
+                               
+                               // --options without a specified value are 
considered boolean flags that are enabled.
+                               String value="true";
+                               String name = args[i].substring(2);
+                               
+                               // if --option=value case
+                               int p = name.indexOf("=");
+                               if( p > 0 ) {
+                                       value = name.substring(p+1);
+                                       name = name.substring(0,p);
+                               }
+                               
+                               // name not set, then it's an unrecognized 
option
+                               if( name.length()==0 ) {
+                                       rc.add(args[i]);
+                                       continue;
+                               }
+                               
+                               String propName = 
convertOptionToPropertyName(name);
+                               if( !IntrospectionSupport.setProperty(target, 
propName, value) ) {                                      
+                                       rc.add(args[i]);
+                                       continue;
+                               }
+                       } else {
+                            rc.add(args[i]);
+                       }
+                       
+               }
+               
+               String r[] = new String[rc.size()];
+               rc.toArray(r);
+               return r;
+       }
+
+       /**
+        * converts strings like: test-enabled to testEnabled
+        * @param name
+        * @return
+        */
+       private static String convertOptionToPropertyName(String name) {
+               String rc="";
+               
+               // Look for '-' and strip and then convert the subsequent char 
to uppercase
+               int p = name.indexOf("-");
+               while( p > 0 ) {
+                       // strip
+                       rc += name.substring(0, p);
+                       name = name.substring(p+1);
+                       
+                       // can I convert the next char to upper?
+                       if( name.length() >0 ) {
+                               rc += name.substring(0,1).toUpperCase();
+                               name = name.substring(1);
+                       }
+                       
+                       p = name.indexOf("-");
+               }
+               return rc+name;
+       }
+}

Modified: 
activemq/sandbox/kahadb/src/test/java/org/apache/kahadb/store/perf/KahaBulkLoadingTest.java
URL: 
http://svn.apache.org/viewvc/activemq/sandbox/kahadb/src/test/java/org/apache/kahadb/store/perf/KahaBulkLoadingTest.java?rev=698244&r1=698243&r2=698244&view=diff
==============================================================================
--- 
activemq/sandbox/kahadb/src/test/java/org/apache/kahadb/store/perf/KahaBulkLoadingTest.java
 (original)
+++ 
activemq/sandbox/kahadb/src/test/java/org/apache/kahadb/store/perf/KahaBulkLoadingTest.java
 Tue Sep 23 10:01:59 2008
@@ -79,7 +79,7 @@
         connection.getPrefetchPolicy().setAll(10);
         connection.start();
 
-        Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+        Session session = connection.createSession(false, 
Session.DUPS_OK_ACKNOWLEDGE);
 
         LOG.info("Receiving messages that are in the queue");
         MessageConsumer consumer = session.createConsumer(destination);


Reply via email to