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 10:15:34 UTC
svn commit: r754638 - in /labs/bananadb/trunk: FILES.txt
src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java
Author: kalle
Date: Sun Mar 15 09:15:31 2009
New Revision: 754638
URL: http://svn.apache.org/viewvc?rev=754638&view=rev
Log:
BananaDB
ValuePostingsPartitionHeader
Modified:
labs/bananadb/trunk/FILES.txt
labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java
Modified: labs/bananadb/trunk/FILES.txt
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/FILES.txt?rev=754638&r1=754637&r2=754638&view=diff
==============================================================================
--- labs/bananadb/trunk/FILES.txt (original)
+++ labs/bananadb/trunk/FILES.txt Sun Mar 15 09:15:31 2009
@@ -8,7 +8,7 @@
Header: 1024 bytes
{{{
-int postings start offset -- will change after rehash
+int next value postings start offset
int capacity
}}}
@@ -64,8 +64,8 @@
Header: 1024 bytes
{{{
-int postings start offset
-int bytes left
+int hash posting start offset -- will change after rehash
+int capacity
}}}
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=754638&r1=754637&r2=754638&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 09:15:31 2009
@@ -165,7 +165,6 @@
log.info("Creating first value partition file");
Partition partition = new Partition();
partition.format(partitionSize);
- partition.open();
return true;
}
@@ -202,7 +201,6 @@
throw new FileNotFoundException("Expected partition " + valuePostingsFileName + "." + i + " but found " + valueFiles[i].getName());
}
Partition partition = new Partition(i);
- partition.open();
}
}
@@ -623,7 +621,9 @@
if (valueBuf != null) {
Partition partition = partitions.get(partitions.size() - 1);
- if (partition.bytesLeft < valueBuf.length) {
+
+ ValuePostingsFileHeader valueHeader = new ValuePostingsFileHeader(accessor.getPartitionRAF(partition));
+ if (valueHeader.bytesLeft < valueBuf.length) {
partition = this.new Partition();
partition.format(partitionSize);
@@ -1092,10 +1092,6 @@
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;
private Partition() {
this(partitions.size());
@@ -1117,16 +1113,15 @@
public long append(HashtableAccessor accessor, byte[] bytes, int length) throws IOException {
- bytesLeft -= length;
-
RandomAccessFile raf = accessor.getPartitionRAF(this);
- long offset = nextPosition;
- nextPosition += 4 + length;
+ ValuePostingsFileHeader header = new ValuePostingsFileHeader(raf);
- raf.seek(0);
- raf.writeLong(nextPosition);
- raf.writeLong(bytesLeft);
+ int offset = header.getNextOffset();
+
+ header.decreaseBytesLeft(length);
+ header.increaseNextOffset(4 + length);
+ header.save(raf);
raf.seek(offset);
raf.writeInt(length);
@@ -1149,24 +1144,12 @@
return null;
}
- public void format(long sizeInBytes) throws IOException {
+ public void format(int sizeInBytes) throws IOException {
Hashtable.this.format(file, sizeInBytes);
- nextPosition = 1024; // save 1K for partition header
- bytesLeft = sizeInBytes;
RandomAccessFile raf = new RandomAccessFile(file, "rw");
- raf.seek(0);
- raf.writeLong(nextPosition);
- raf.writeLong(bytesLeft);
- raf.close();
- }
-
- public void open() throws IOException {
-
- RandomAccessFile raf = new RandomAccessFile(file, "r");
- raf.seek(0);
- nextPosition = raf.readLong();
- bytesLeft = raf.readLong();
+ ValuePostingsFileHeader header = new ValuePostingsFileHeader(1024, sizeInBytes - 1024);
+ header.save(raf);
raf.close();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org