Skip to content

Commit 7f44f1e

Browse files
authored
Implement committed.Iterator.NextRange() without recursive call (treeverse#1365)
Better because golang does not support tail recursion. Fixes treeverse#1178.
1 parent 7b0b25e commit 7f44f1e

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

graveler/committed/iterator.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ func (rvi *iterator) NextRange() bool {
4545
}
4646
rvi.it = nil
4747
rvi.rng = nil
48-
if !rvi.rangesIt.Next() {
49-
return false
50-
}
51-
rngRecord := rvi.rangesIt.Value()
52-
if rngRecord == nil {
53-
return rvi.NextRange()
48+
49+
var rngRecord *Record
50+
for rngRecord == nil { // Skip this and any consecutive finished ranges.
51+
if !rvi.rangesIt.Next() {
52+
return false
53+
}
54+
rngRecord = rvi.rangesIt.Value()
5455
}
5556

5657
gv, err := UnmarshalValue(rngRecord.Value)

0 commit comments

Comments
 (0)