Skip to content

Commit 9ec656d

Browse files
committed
Fix - process all clusters in RNtuple
1 parent 7eb59d0 commit 9ec656d

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

modules/rntuple.mjs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -963,11 +963,11 @@ function getSelectorFieldName(selector, i) {
963963
}
964964

965965
// Read and process the next data cluster from the RNTuple
966-
function readNextCluster(rntuple, selector) {
966+
async function readNextCluster(rntuple, selector) {
967967
const builder = rntuple.builder;
968968

969969
// Add validation
970-
if (!builder.clusterSummaries || builder.clusterSummaries.length === 0)
970+
if (!builder.clusterSummaries)
971971
throw new Error('No cluster summaries available - possibly incomplete file reading');
972972

973973
const clusterIndex = selector.currentCluster,
@@ -977,6 +977,11 @@ function readNextCluster(rntuple, selector) {
977977
// Collect only selected field names from selector
978978
selectedFields = [];
979979

980+
if (!clusterSummary) {
981+
selector.Terminate(clusterIndex > 0);
982+
return false;
983+
}
984+
980985
for (let i = 0; i < selector.numBranches(); ++i)
981986
selectedFields.push(getSelectorFieldName(selector, i));
982987

@@ -1003,7 +1008,7 @@ function readNextCluster(rntuple, selector) {
10031008
// Early exit if no pages to read (i.e., no selected fields matched)
10041009
if (pages.length === 0) {
10051010
selector.Terminate(false);
1006-
return Promise.resolve();
1011+
return false;
10071012
}
10081013

10091014
// Build flat array of [offset, size, offset, size, ...] to read pages
@@ -1079,10 +1084,10 @@ function readNextCluster(rntuple, selector) {
10791084

10801085
selector.tgtobj[tgtName] = readEntry(rntuple, fieldName, clusterIndex, i);
10811086
}
1082-
selector.Process(i);
1087+
selector.Process(selector.currentEntry++);
10831088
}
10841089

1085-
selector.Terminate(true);
1090+
return readNextCluster(rntuple, selector);
10861091
});
10871092
});
10881093
}
@@ -1093,6 +1098,7 @@ function rntupleProcess(rntuple, selector, args) {
10931098
return readHeaderFooter(rntuple).then(() => {
10941099
selector.Begin();
10951100
selector.currentCluster = 0;
1101+
selector.currentEntry = 0;
10961102
return readNextCluster(rntuple, selector, args);
10971103
}).then(() => selector);
10981104
}

0 commit comments

Comments
 (0)