You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/05/08 16:54:27 UTC
svn commit: r773017 -
/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/FileStruct.java
Author: jbellis
Date: Fri May 8 14:54:27 2009
New Revision: 773017
URL: http://svn.apache.org/viewvc?rev=773017&view=rev
Log:
fix iteration bug. it would always return hasNext=false if seekTo was called first. fixing this with maybeInit proved difficult, so init is now done in constructor and iterator itself is created lazily.
patch by jbellis; tested by nk11 for CASSANDRA-153
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/FileStruct.java
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/FileStruct.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/FileStruct.java?rev=773017&r1=773016&r2=773017&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/FileStruct.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/FileStruct.java Fri May 8 14:54:27 2009
@@ -37,7 +37,7 @@
private DataInputBuffer bufIn;
private DataOutputBuffer bufOut;
private IPartitioner partitioner;
- private FileStructIterator iterator = new FileStructIterator();
+ private FileStructIterator iterator;
public FileStruct(IFileReader reader, IPartitioner partitioner)
{
@@ -150,12 +150,16 @@
public boolean hasNext()
{
+ if (iterator == null)
+ iterator = new FileStructIterator();
return iterator.hasNext();
}
/** do not mix with manual calls to advance(). */
public String next()
{
+ if (iterator == null)
+ iterator = new FileStructIterator();
return iterator.next();
}
@@ -168,6 +172,18 @@
{
String saved;
+ public FileStructIterator()
+ {
+ if (key == null)
+ {
+ if (!isExhausted())
+ {
+ forward();
+ }
+ }
+ saved = key;
+ }
+
private void forward()
{
try
@@ -181,23 +197,13 @@
saved = isExhausted() ? null : key;
}
- private void maybeInit()
- {
- if (key == null && !isExhausted())
- {
- forward();
- }
- }
-
public boolean hasNext()
{
- maybeInit();
return saved != null;
}
public String next()
{
- maybeInit();
if (saved == null)
{
throw new IndexOutOfBoundsException();