Taewoo Kim has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/1505
Change subject: ASTERIXDB-1791: Add a sanity check to hashjoin partition reading ...................................................................... ASTERIXDB-1791: Add a sanity check to hashjoin partition reading - Add a sanity condition when reading the spilled partition pairs from disk. Change-Id: I034691f05e05207b478929d76b02013578eed5ed --- M hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java M hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java 2 files changed, 9 insertions(+), 3 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/05/1505/1 diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java index 17f009e..9733366 100644 --- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java +++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java @@ -605,6 +605,10 @@ this.isReversed = b; } + public int getNumberOfPartitions() { + return numOfPartitions; + } + /** * Prints out the detailed information for partitions: in-memory and spilled partitions. * This method exists for a debug purpose. diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java index a72c0c6..a8e66ac 100644 --- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java +++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java @@ -418,8 +418,9 @@ BitSet partitionStatus = state.hybridHJ.getPartitionStatus(); rPartbuff.reset(); - for (int pid = partitionStatus.nextSetBit(0); pid >= 0; pid = partitionStatus - .nextSetBit(pid + 1)) { + for (int pid = partitionStatus.nextSetBit(0); pid >= 0 + && pid < state.hybridHJ.getNumberOfPartitions(); pid = partitionStatus + .nextSetBit(pid + 1)) { RunFileReader bReader = state.hybridHJ.getBuildRFReader(pid); RunFileReader pReader = state.hybridHJ.getProbeRFReader(pid); @@ -579,7 +580,8 @@ LOGGER.fine("\t\t>>>Case 2.1.1 - KEEP APPLYING RecursiveHHJ WITH " + "(isLeftOuter || build<probe) - [Level " + level + "]"); } - for (int rPid = rPStatus.nextSetBit(0); rPid >= 0; rPid = rPStatus.nextSetBit(rPid + 1)) { + for (int rPid = rPStatus.nextSetBit(0); rPid >= 0 + && rPid < rHHj.getNumberOfPartitions(); rPid = rPStatus.nextSetBit(rPid + 1)) { RunFileReader rbrfw = rHHj.getBuildRFReader(rPid); RunFileReader rprfw = rHHj.getProbeRFReader(rPid); int rbSizeInTuple = rHHj.getBuildPartitionSizeInTup(rPid); -- To view, visit https://asterix-gerrit.ics.uci.edu/1505 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I034691f05e05207b478929d76b02013578eed5ed Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Taewoo Kim <wangs...@gmail.com>