You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ka...@apache.org on 2009/03/15 06:23:11 UTC
svn commit: r754616 - in /labs/bananadb/trunk: ./
src/main/java/org/apache/labs/bananadb/hashtable/
src/main/java/org/apache/labs/bananadb/hashtable/lock/
src/main/java/org/apache/labs/bananadb/hashtable/txn/
src/main/java/org/apache/labs/bananadb/lock...
Author: kalle
Date: Sun Mar 15 05:23:10 2009
New Revision: 754616
URL: http://svn.apache.org/viewvc?rev=754616&view=rev
Log:
BananaDB
replaced commons-logging with slf4j
more documentation
a bunch of name space refactors
Added:
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Benchmark.java
- copied, changed from r754462, labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/Benchmark.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/
- copied from r753612, labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/lock/
Removed:
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/lock/
labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/Benchmark.java
Modified:
labs/bananadb/trunk/BENCHMARK.txt
labs/bananadb/trunk/FILES.txt
labs/bananadb/trunk/pom.xml
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/HashtableAccessor.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/ValueClassHandler.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Isolation.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Transaction.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/Lock.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockFactory.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockObtainFailedException.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockReleaseFailedException.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockStressTest.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockVerifyServer.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NativeFSLockFactory.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoLockFactory.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoSuchDirectoryException.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SimpleFSLockFactory.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SingleInstanceLockFactory.java
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/VerifyingLockFactory.java
labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/HashtableTest.java
labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestHashtable.java
labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestMultiThreaded.java
labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestRehash.java
labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestValuePartitions.java
Modified: labs/bananadb/trunk/BENCHMARK.txt
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/BENCHMARK.txt?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/BENCHMARK.txt (original)
+++ labs/bananadb/trunk/BENCHMARK.txt Sun Mar 15 05:23:10 2009
@@ -58,4 +58,24 @@
-kalle@apache.org
\ No newline at end of file
+kalle@apache.org
+
+
+
+capacity items random write ms/item sequencial read ms/items random read ms/item
+8000 1000 0.805 0.1293 0.15842
+12000 1500 0.683 0.11794 0.15646
+18000 2250 0.877 0.09969 0.33615
+27000 3375 0.691 0.10393 0.21926
+40496 5062 0.786 0.1072 0.25094
+60744 7593 0.724 0.09941 0.3041
+91112 11389 0.817 0.12546 0.31408
+136664 17083 1.065 0.09652 0.48662
+204992 25624 1.145 0.12075 0.72948
+307488 38436 1.560 0.10247 0.92083
+461232 57654 1.223 0.09537 0.61455
+691848 86481 2.614 0.11821 1.35132
+1037768 129721 1.004 9.79918 0.32858
+1556648 194581 2.991 2.49016 0.98731
+2334968 291871 2.382 4.32559 0.58027
+3502448 437806 1.338 5.19182 0.27377
\ No newline at end of file
Modified: labs/bananadb/trunk/FILES.txt
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/FILES.txt?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/FILES.txt (original)
+++ labs/bananadb/trunk/FILES.txt Sun Mar 15 05:23:10 2009
@@ -41,10 +41,12 @@
Posting data:
{{{
+deleted key posting values are all set to -2.
+
int offset position in this file to the next entry with the same hash, -1 = null
int value partition number, -1 = null value
int offset position in value partition, -1 = null
-int key length in bytes, 0 = null
+int key length in bytes, 0 = null // todo remove
byte[] serialized key (if not null)
int key hash, will be used for future rehashing
Modified: labs/bananadb/trunk/pom.xml
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/pom.xml?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/pom.xml (original)
+++ labs/bananadb/trunk/pom.xml Sun Mar 15 05:23:10 2009
@@ -9,6 +9,10 @@
<description>BananaDB, a hashtable living on filesystem and not in memory.</description>
<url>http://kodapan.se/bananadb</url>
+ <properties>
+ <slf4j.version>1.5.3</slf4j.version>
+ </properties>
+
<dependencies>
<dependency>
@@ -26,16 +30,16 @@
</dependency>
<dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.15</version>
- <scope>test</scope>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
</dependency>
<dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.1.1</version>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ <version>${slf4j.version}</version>
+ <scope>test</scope>
</dependency>
</dependencies>
Copied: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Benchmark.java (from r754462, labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/Benchmark.java)
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Benchmark.java?p2=labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Benchmark.java&p1=labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/Benchmark.java&r1=754462&r2=754616&rev=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/Benchmark.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Benchmark.java Sun Mar 15 05:23:10 2009
@@ -25,17 +25,15 @@
Benchmark benchmark = new Benchmark();
- for (int capacityfactor = 8; capacityfactor <= 10; capacityfactor += 2) {
- for (int items = 1000; items <= 1000000; items *= 1.5) {
- benchmark.test(items, capacityfactor * items, csv);
- System.out.println("-----");
- System.out.println(csv.toString());
- System.out.println("-----");
- Runtime.getRuntime().gc();
- Runtime.getRuntime().gc();
- }
+ int capacityfactor = 8;
+ for (int items = 1000; items <= 1000000; items *= 1.5) {
+ benchmark.test(items, capacityfactor * items, csv);
+ System.out.println("-----");
+ System.out.println(csv.toString());
+ System.out.println("-----");
+ Runtime.getRuntime().gc();
+ Runtime.getRuntime().gc();
}
-
}
public void test(int items, int capacity, StringBuilder csv) throws Exception {
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java Sun Mar 15 05:23:10 2009
@@ -18,12 +18,12 @@
*/
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.labs.bananadb.hashtable.lock.Lock;
-import org.apache.labs.bananadb.hashtable.lock.NativeFSLockFactory;
-import org.apache.labs.bananadb.hashtable.lock.LockFactory;
+import org.apache.labs.bananadb.lock.Lock;
+import org.apache.labs.bananadb.lock.NativeFSLockFactory;
+import org.apache.labs.bananadb.lock.LockFactory;
import org.apache.labs.bananadb.hashtable.txn.Transaction;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.*;
@@ -38,7 +38,7 @@
*/
public class Hashtable<K, V> {
- private Log log = LogFactory.getLog(Hashtable.class);
+ private Logger log = LoggerFactory.getLogger(Hashtable.class);
private static final int HASHTABLE_HEADER_BYTE_SIZE = 1024;
@@ -405,6 +405,10 @@
return with.run();
}
+ private boolean automaticGrowing = true;
+ private double automaticGrowingCapacityFactor = 1.7d;
+ private double automaticGrowingThreadshold = 0.8d;
+
/**
* EXPERT: This method should only be called when a lock exists.
*
@@ -419,6 +423,17 @@
HashtableFileHeader hashtableFileHeader = new HashtableFileHeader(accessor);
KeyPostingsFileHeader keyPostingsFileHeader = new KeyPostingsFileHeader(accessor);
+ if (automaticGrowing) {
+ double bytes = keyPostingsFileHeader.getEndOffset() - keyPostingsFileHeader.getStartOffset();
+ double bytesLeft = keyPostingsFileHeader.getEndOffset() - keyPostingsFileHeader.getNextOffset();
+ double percentLeft = bytesLeft / bytes;
+ if (percentLeft < automaticGrowingThreadshold) {
+ doRehash(accessor, (int) (keyPostingsFileHeader.getCapacity() * automaticGrowingCapacityFactor));
+ hashtableFileHeader = new HashtableFileHeader(accessor);
+ keyPostingsFileHeader = new KeyPostingsFileHeader(accessor);
+ }
+ }
+
// write key to buf
ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
keyClassHandler.write(key, new DataOutputStream(baos));
@@ -686,7 +701,7 @@
public V remove(final HashtableAccessor accessor, final K key) throws IOException {
Lock.With<V> with = new Lock.With<V>(writeLock, lockWaitTimeoutMilliseconds) {
protected V doBody() throws IOException {
- return doremove(accessor, key);
+ return doRemove(accessor, key);
}
};
return with.run();
@@ -701,7 +716,7 @@
* @return
* @throws IOException
*/
- private V doremove(HashtableAccessor accessor, K key) throws IOException {
+ private V doRemove(HashtableAccessor accessor, K key) throws IOException {
HashtableFileHeader hashtableFileHeader = new HashtableFileHeader(accessor);
KeyPostingsFileHeader keyPostingsFileHeader = new KeyPostingsFileHeader(accessor);
@@ -759,6 +774,19 @@
accessor.getHashtableRAF().writeByte(0);
}
+ // remove posting in key file
+ accessor.getKeyPostingsRAF().seek(keyPostingOffset);
+ accessor.getKeyPostingsRAF().writeInt(-2); // int next key posting offset at same hash position
+ accessor.getKeyPostingsRAF().writeInt(-2); // int value partition
+ accessor.getKeyPostingsRAF().writeInt(-2); // int value partition offset
+ accessor.getKeyPostingsRAF().writeInt(-2); // int key length // todo remove
+ for (int i=0; i<keyClassHandler.getByteSize(); i++) {
+ accessor.getKeyPostingsRAF().writeByte(-2); // key
+ }
+ accessor.getKeyPostingsRAF().writeInt(-2); // key hash
+
+ // update key file headers
+
keyPostingsFileHeader.decreaseEntityCount(1);
keyPostingsFileHeader.increaseVersion(1);
keyPostingsFileHeader.save(accessor);
@@ -803,11 +831,15 @@
private void doRehash(HashtableAccessor accessor, int newCapacity) throws IOException {
- // todo append to existing files rather than creating new!
+ log.info("Rehashing..");
+
+ long ms = System.currentTimeMillis();
HashtableFileHeader inputHashtableFileHeader = new HashtableFileHeader(accessor);
KeyPostingsFileHeader inputKeyPostingsFileHeader = new KeyPostingsFileHeader(accessor);
+ log.info("Updating capacity from " + inputKeyPostingsFileHeader.getCapacity() + " to " + newCapacity + ".");
+
HashtableFileHeader outputHashtableFileHeader = new HashtableFileHeader(inputHashtableFileHeader.getEndOffset() + 1, newCapacity);
KeyPostingsFileHeader outputKeyPostingsFileHeader = new KeyPostingsFileHeader(inputKeyPostingsFileHeader.getNextOffset() + 1, inputKeyPostingsFileHeader.getEntityCount(), inputKeyPostingsFileHeader.getNextOffset() + 1, newCapacity, inputKeyPostingsFileHeader.getVersion() + 1);
@@ -822,6 +854,7 @@
formatAppend(hashtableOutput, newCapacity * HASHTABLE_RECORD_BYTE_SIZE);
formatAppend(keyPostingsOutput, newCapacity * keyPostingByteSize);
+ int highScore = 0;
int nextKeyListPostingOffset;
int valuePartition;
@@ -830,11 +863,16 @@
byte[] keyBuf = new byte[keyClassHandler.getByteSize()];
int keyHash;
- for (int inputKeyPostingIndex = 0; inputKeyPostingIndex < inputKeyPostingsFileHeader.getEntityCount(); inputKeyPostingIndex++) {
-
+ for (int inputKeyPostingOffset = inputKeyPostingsFileHeader.getStartOffset(); inputKeyPostingOffset < inputKeyPostingsFileHeader.getNextOffset(); inputKeyPostingOffset+=keyPostingByteSize) {
// int offset position in this file to the next entry with the same hash, -1 = null
nextKeyListPostingOffset = keyPostingsInput.readInt();
+
+ if (nextKeyListPostingOffset == -2) {
+ keyPostingsInput.skipBytes(keyPostingByteSize - 4);
+ continue;
+ }
+
// int value partition number, -1 = null value
valuePartition = keyPostingsInput.readInt();
// int offset position in value partition, -1 = null
@@ -872,7 +910,7 @@
keyPostingsOutput.write(keyBuf);
// key hash
- keyPostingsOutput.write(keyHash);
+ keyPostingsOutput.writeInt(keyHash);
hashtableOutput.seek(outputHashtableOffset);
hashtableOutput.writeByte(1);
@@ -883,7 +921,7 @@
int firstKeyPostingOffset = hashtableOutput.readInt();
- K compareKey;
+ int depth = 0;
int previousKeyPostingOffset = -1;
int nextKeyPostingOffset = firstKeyPostingOffset;
@@ -898,6 +936,13 @@
int keySize = keyPostingsOutput.readInt();
previousKeyPostingOffset = keyPostingOffset;
+ depth++;
+
+ }
+
+ if (depth > highScore) {
+ highScore = depth;
+ log.info("New depth high score: " + highScore);
}
// this key instance did not exist in entries
@@ -924,7 +969,7 @@
keyPostingsOutput.write(keyBuf);
// key hash
- keyPostingsOutput.write(keyHash);
+ keyPostingsOutput.writeInt(keyHash);
keyPostingsOutput.seek(previousKeyPostingOffset);
keyPostingsOutput.writeInt(keyPostingOffset);
@@ -939,7 +984,10 @@
outputKeyPostingsFileHeader.save(accessor);
- System.currentTimeMillis();
+ ms = System.currentTimeMillis() - ms;
+
+ log.info("Rehashing took " + ms + " milliseconds.");
+
}
@@ -951,6 +999,8 @@
private int partitionNumber;
private File file;
+ // todo use header class!! read from file each time we access values!!
+
private long nextPosition = -1;
private long bytesLeft = -1;
@@ -1058,7 +1108,7 @@
public void formatAppend(RandomAccessFile raf, long size) throws IOException {
- log.info("Appending " + size + " bytes..");
+ log.debug("Appending " + size + " bytes to file..");
long ms = System.currentTimeMillis();
@@ -1075,8 +1125,7 @@
raf.write(bytes, 0, (int) leftToWrite);
}
-
- log.info("It took " + (System.currentTimeMillis() - ms) + " milliseconds to append.");
+ log.debug("It took " + (System.currentTimeMillis() - ms) + " milliseconds to append.");
}
@@ -1298,6 +1347,11 @@
this.lockWaitTimeoutMilliseconds = lockWaitTimeoutMilliseconds;
}
+
+ List<HashtableAccessor> getAccessors() {
+ return accessors;
+ }
+
public void close() throws IOException {
if (accessors.size() > 0) {
log.warn("There are " + accessors.size() + " accessors opened. They will be closed.");
@@ -1326,6 +1380,13 @@
}
};
+ ThreadLocal<Transaction<K, V>> getTransactions() {
+ return transactions;
+ }
+
+ /**
+ * @return A thread local transaction
+ */
public Transaction<K, V> getTxn() {
return transactions.get();
}
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/HashtableAccessor.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/HashtableAccessor.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/HashtableAccessor.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/HashtableAccessor.java Sun Mar 15 05:23:10 2009
@@ -30,6 +30,7 @@
*/
public class HashtableAccessor {
+ private Hashtable hashtable;
private String access;
private RandomAccessFile hashtableRAF;
private RandomAccessFile keyPostingsRAF;
@@ -43,7 +44,7 @@
* @throws IOException
*/
HashtableAccessor(Hashtable<?, ?> hashtable, boolean readOnly) throws IOException {
- // todo open hashtableRAF, entriesRAF and all partitionRAFs
+ this.hashtable = hashtable;
access = readOnly ? "r" : "rw";
@@ -83,6 +84,8 @@
for (RandomAccessFile partitionRAF : partitionRAFs.values()) {
partitionRAF.close();
}
+
+ hashtable.getAccessors().remove(this);
}
}
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/ValueClassHandler.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/ValueClassHandler.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/ValueClassHandler.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/ValueClassHandler.java Sun Mar 15 05:23:10 2009
@@ -28,5 +28,5 @@
public abstract Class<C> getEntityClass();
public abstract void write(C entity, DataOutputStream out) throws IOException;
public abstract C read(DataInputStream in) throws IOException;
-
+
}
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Isolation.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Isolation.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Isolation.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Isolation.java Sun Mar 15 05:23:10 2009
@@ -3,6 +3,25 @@
import java.io.IOException;
/**
+ * Consider the following scenario:
+ *
+ * The database contains an entry with the primary key A.
+ *
+ * Transaction T1 begins.
+ * Transaction T2 begins.
+ * T1 removes A.
+ * T2 removes A.
+ * T1 commit.
+ * Transaction T3 begins.
+ * T3 create a new entry with primary key A.
+ * T3 commit
+ * T2 commit.
+ *
+ * Should the entry A that T3 created and commited just before T2 commited still be in the database?
+ * Should perhaps an exception be thrown in T2?
+ *
+ * This is what isolation strategies is all about.
+ *
* @author kalle
* @since 2009-mar-14 15:39:32
*/
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Transaction.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Transaction.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Transaction.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/txn/Transaction.java Sun Mar 15 05:23:10 2009
@@ -1,12 +1,11 @@
package org.apache.labs.bananadb.hashtable.txn;
-import org.apache.labs.bananadb.hashtable.lock.Lock;
-import org.apache.labs.bananadb.hashtable.lock.SingleInstanceLockFactory;
+import org.apache.labs.bananadb.lock.Lock;
+import org.apache.labs.bananadb.lock.SingleInstanceLockFactory;
import org.apache.labs.bananadb.hashtable.*;
import java.io.IOException;
import java.util.*;
-import java.util.Hashtable;
/**
* @author kalle
@@ -71,7 +70,7 @@
created = null;
replaced = null;
removed = null;
-
+
return null;
}
};
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/Lock.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/Lock.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/Lock.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/Lock.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockFactory.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockFactory.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockObtainFailedException.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockObtainFailedException.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockObtainFailedException.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockObtainFailedException.java Sun Mar 15 05:23:10 2009
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
import java.io.IOException;
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockReleaseFailedException.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockReleaseFailedException.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockReleaseFailedException.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockReleaseFailedException.java Sun Mar 15 05:23:10 2009
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
import java.io.IOException;
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockStressTest.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockStressTest.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockStressTest.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockStressTest.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -34,7 +34,7 @@
public static void main(String[] args) throws Exception {
if (args.length != 6) {
- System.out.println("\nUsage: java org.apache.labs.bananadb.hashtable.lock.LockStressTest myID verifierHostOrIP verifierPort lockFactoryClassName lockDirName sleepTime\n" +
+ System.out.println("\nUsage: java org.apache.labs.bananadb.lock.LockStressTest myID verifierHostOrIP verifierPort lockFactoryClassName lockDirName sleepTime\n" +
"\n" +
" myID = int from 0 .. 255 (should be unique for test process)\n" +
" verifierHostOrIP = host name or IP address where LockVerifyServer is running\n" +
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockVerifyServer.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockVerifyServer.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockVerifyServer.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/LockVerifyServer.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -42,7 +42,7 @@
public static void main(String[] args) throws IOException {
if (args.length != 1) {
- System.out.println("\nUsage: java org.apache.labs.bananadb.hashtable.lock.LockVerifyServer port\n");
+ System.out.println("\nUsage: java org.apache.labs.bananadb.lock.LockVerifyServer port\n");
System.exit(1);
}
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NativeFSLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NativeFSLockFactory.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NativeFSLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NativeFSLockFactory.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoLockFactory.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoLockFactory.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoSuchDirectoryException.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoSuchDirectoryException.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoSuchDirectoryException.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/NoSuchDirectoryException.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SimpleFSLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SimpleFSLockFactory.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SimpleFSLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SimpleFSLockFactory.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SingleInstanceLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SingleInstanceLockFactory.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SingleInstanceLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/SingleInstanceLockFactory.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/VerifyingLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/VerifyingLockFactory.java?rev=754616&r1=753612&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/VerifyingLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/lock/VerifyingLockFactory.java Sun Mar 15 05:23:10 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.hashtable.lock;
+package org.apache.labs.bananadb.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/HashtableTest.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/HashtableTest.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/HashtableTest.java (original)
+++ labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/HashtableTest.java Sun Mar 15 05:23:10 2009
@@ -22,8 +22,8 @@
import java.io.File;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
/**
* @author kalle
@@ -31,7 +31,7 @@
*/
public abstract class HashtableTest extends TestCase {
- public static final Log log = LogFactory.getLog(HashtableTest.class);
+ protected Logger log = LoggerFactory.getLogger(HashtableTest.class);
private File path;
Modified: labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestHashtable.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestHashtable.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestHashtable.java (original)
+++ labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestHashtable.java Sun Mar 15 05:23:10 2009
@@ -17,18 +17,11 @@
* limitations under the License.
*/
-import junit.framework.TestCase;
import org.apache.labs.bananadb.hashtable.handlers.IntegerHandler;
import org.apache.labs.bananadb.hashtable.handlers.StringValueHandler;
-import org.apache.labs.bananadb.hashtable.lock.NoLockFactory;
-import org.apache.labs.bananadb.hashtable.lock.SingleInstanceLockFactory;
import org.junit.Test;
import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.concurrent.atomic.AtomicInteger;
/**
* User: kalle
Modified: labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestMultiThreaded.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestMultiThreaded.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestMultiThreaded.java (original)
+++ labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestMultiThreaded.java Sun Mar 15 05:23:10 2009
@@ -17,11 +17,8 @@
* limitations under the License.
*/
-import junit.framework.TestCase;
import org.apache.labs.bananadb.hashtable.handlers.IntegerHandler;
import org.apache.labs.bananadb.hashtable.handlers.StringValueHandler;
-import org.apache.labs.bananadb.hashtable.lock.NoLockFactory;
-import org.apache.labs.bananadb.hashtable.lock.SingleInstanceLockFactory;
import org.junit.Test;
import java.io.File;
Modified: labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestRehash.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestRehash.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestRehash.java (original)
+++ labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestRehash.java Sun Mar 15 05:23:10 2009
@@ -17,18 +17,11 @@
* limitations under the License.
*/
-import junit.framework.TestCase;
import org.apache.labs.bananadb.hashtable.handlers.IntegerHandler;
import org.apache.labs.bananadb.hashtable.handlers.StringValueHandler;
-import org.apache.labs.bananadb.hashtable.lock.NoLockFactory;
-import org.apache.labs.bananadb.hashtable.lock.SingleInstanceLockFactory;
import org.junit.Test;
import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.concurrent.atomic.AtomicInteger;
/**
* User: kalle
@@ -37,6 +30,23 @@
*/
public class TestRehash extends HashtableTest {
+ @Test
+ public void testAutomaticRehash() throws Exception {
+
+ File path = getDirectory("testAutomaticRehash");
+ Hashtable<Integer, String> map = new Hashtable<Integer, String>(path, 100, new IntegerHandler(), new StringValueHandler());
+
+ HashtableAccessor accessor = map.createAccessor(false);
+ for (int i = 0; i < 200000; i++) {
+ map.put(accessor, i, "foo");
+ }
+
+ Hashtable.HashtableFileHeader hashtableFileHeader = map.new HashtableFileHeader(accessor);
+ assertEquals(1417, hashtableFileHeader.getCapacity());
+
+ accessor.close();
+
+ }
@Test
public void testRehash() throws Exception {
@@ -79,5 +89,5 @@
}
-
+
}
\ No newline at end of file
Modified: labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestValuePartitions.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestValuePartitions.java?rev=754616&r1=754615&r2=754616&view=diff
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestValuePartitions.java (original)
+++ labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/hashtable/TestValuePartitions.java Sun Mar 15 05:23:10 2009
@@ -17,18 +17,11 @@
* limitations under the License.
*/
-import junit.framework.TestCase;
import org.apache.labs.bananadb.hashtable.handlers.IntegerHandler;
import org.apache.labs.bananadb.hashtable.handlers.StringValueHandler;
-import org.apache.labs.bananadb.hashtable.lock.NoLockFactory;
-import org.apache.labs.bananadb.hashtable.lock.SingleInstanceLockFactory;
import org.junit.Test;
import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.concurrent.atomic.AtomicInteger;
/**
* User: kalle
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org