This is an automated email from the ASF dual-hosted git repository.
kadir pushed a commit to branch 5.2
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/5.2 by this push:
new 2581df13be PHOENIX-7574 Addendum to check loop variable increments
against the loop condition (#2127)
2581df13be is described below
commit 2581df13be23b12a4e051d9081e3d8ca8db66d06
Author: Kadir Ozdemir <[email protected]>
AuthorDate: Thu Apr 24 12:41:20 2025 -0700
PHOENIX-7574 Addendum to check loop variable increments against the loop
condition (#2127)
---
.../phoenix/coprocessor/CompactionScanner.java | 40 ++++++++++++++--------
1 file changed, 26 insertions(+), 14 deletions(-)
diff --git
a/phoenix-core-server/src/main/java/org/apache/phoenix/coprocessor/CompactionScanner.java
b/phoenix-core-server/src/main/java/org/apache/phoenix/coprocessor/CompactionScanner.java
index 1768197f97..c084b9907b 100644
---
a/phoenix-core-server/src/main/java/org/apache/phoenix/coprocessor/CompactionScanner.java
+++
b/phoenix-core-server/src/main/java/org/apache/phoenix/coprocessor/CompactionScanner.java
@@ -854,11 +854,15 @@ public class CompactionScanner implements InternalScanner
{
retainedCells.add(cell);
}
}
- cell = result.get(index + 1);
- if (!CellUtil.matchingColumn(cell,
currentColumnCell)) {
- continue top;
+ if (index + 1 < result.size()) {
+ cell = result.get(index + 1);
+ if (!CellUtil.matchingColumn(cell,
currentColumnCell)) {
+ continue top;
+ }
+ index++;
+ } else {
+ break top;
}
- index++;
}
}
}
@@ -885,17 +889,25 @@ public class CompactionScanner implements InternalScanner
{
} else if (!major) {
retainedCells.add(cell);
}
- Cell nextCell = result.get(index + 1);
- if (!CellUtil.matchingColumn(currentColumnCell, nextCell))
{
- continue top;
- }
- // Increment index by one as the delete cell should be
consumed
- index++;
- if (nextCell.getType() == Cell.Type.Put
- && cell.getTimestamp() == nextCell.getTimestamp())
{
- // This put cell is masked by the delete marker
+ if (index + 1 < result.size()) {
+ Cell nextCell = result.get(index + 1);
+ if (!CellUtil.matchingColumn(currentColumnCell,
nextCell)) {
+ continue top;
+ }
+ // Increment index by one as the delete cell should be
consumed
index++;
- cell = result.get(index);
+ if (nextCell.getType() == Cell.Type.Put
+ && cell.getTimestamp() ==
nextCell.getTimestamp()) {
+ // This put cell is masked by the delete marker
+ index++;
+ if (index < result.size()) {
+ cell = result.get(index);
+ } else {
+ break top;
+ }
+ }
+ } else {
+ break top;
}
}
if (cell.getType() == Cell.Type.DeleteColumn) {