This is an automated email from the ASF dual-hosted git repository.

virajjasani pushed a commit to branch 5.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/5.3 by this push:
     new e7fb706dbc PHOENIX-8000 Fix CDCStreamCompactionTTLIT hang under HBase 
2.6 procedure-based flush (addendum) (#2622)
e7fb706dbc is described below

commit e7fb706dbc3d5328f785f6dffe92bb552ecec83c
Author: Shubham Roy <[email protected]>
AuthorDate: Thu Sep 24 03:51:42 2026 +0530

    PHOENIX-8000 Fix CDCStreamCompactionTTLIT hang under HBase 2.6 
procedure-based flush (addendum) (#2622)
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
---
 .../apache/phoenix/end2end/CDCStreamCompactionTTLIT.java    | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CDCStreamCompactionTTLIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CDCStreamCompactionTTLIT.java
index 87c41ba625..6bfbd1cc48 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CDCStreamCompactionTTLIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CDCStreamCompactionTTLIT.java
@@ -113,6 +113,13 @@ public class CDCStreamCompactionTTLIT extends CDCBaseIT {
     // Before advancing the clock, every partition row is still present on 
disk.
     assertEquals("baseline: all 3 partition rows present on disk before 
compaction", 3, rawBefore);
 
+    // Flush SYSTEM.CDC_STREAM to disk at the REAL clock, BEFORE advancing the 
edge. On HBase 2.6
+    // Admin.flush is procedure-based (FlushTableProcedure); issuing it while 
the injected clock is
+    // jumped ~30h ahead of wall-clock strands the flush op in the 
RSProcedureDispatcher and hangs
+    // the test. (Same flush-then-jump ordering as AdhocViewCompactionsIT / 
MaxLookbackIT /
+    // TableTTLIT.)
+    getUtility().getAdmin().flush(physicalCdcStreamTable);
+
     try {
       // Advance the clock past the partition-expiry window so the 
closed-partition rows expire.
       ManualEnvironmentEdge injectEdge = new ManualEnvironmentEdge();
@@ -123,8 +130,10 @@ public class CDCStreamCompactionTTLIT extends CDCBaseIT {
       injectEdge.setValue(t);
 
       // Major compact SYSTEM.CDC_STREAM. With the conditional TTL compiled, 
the expired
-      // closed-partition rows must be physically removed here.
-      TestUtil.doMajorCompaction(conn, SYSTEM_CDC_STREAM_NAME);
+      // closed-partition rows must be physically removed here. Use the 
state-based major-compaction
+      // helper (bounded wait on the compaction state) rather than 
doMajorCompaction's marker-row
+      // completion protocol, which does not terminate for a conditional-TTL 
table.
+      TestUtil.majorCompact(getUtility(), physicalCdcStreamTable);
 
       long rawAfter = TestUtil.getRawRowCount(conn, physicalCdcStreamTable);
       assertEquals("closed partition physically purged; only the 2 open 
partitions remain", 2,

Reply via email to