shubham-roy opened a new pull request, #2621:
URL: https://github.com/apache/phoenix/pull/2621

   ### Addendum to PHOENIX-8000
   
   `CDCStreamCompactionTTLIT` (added in PHOENIX-8000) hangs indefinitely when 
built under `-Dhbase.profile=2.6`, timing out CI. It passes under the default 
hbase 2.5 profile, which is why it wasn't caught pre-merge.
   
   ### Root cause
   The test injects a `ManualEnvironmentEdge` ~30h ahead of wall-clock and then 
calls `TestUtil.doMajorCompaction`, whose first step is 
`Admin.flush(SYSTEM.CDC_STREAM)`. On HBase 2.6 `Admin.flush` is procedure-based 
(`FlushTableProcedure`, HBASE-27811). With the injected edge frozen ~30h ahead, 
the `RSProcedureDispatcher` schedules the remote flush op ~30h out in *real* 
time, so it is never dispatched and the flush `ProcedureFuture` polls forever → 
hang. (jstack: `main` is blocked in `Admin.flush → 
HBaseAdmin$ProcedureFuture.waitProcedureResult`; the `PEWorker`, 
`MemStoreFlusher`, and `RSProcedureDispatcher` threads are all idle.) On HBase 
2.5 `Admin.flush` is synchronous, so the identical test passes there.
   
   ### Fix (test-only)
   Adopt the idiom already used by `AdhocViewCompactionsIT` / `MaxLookbackIT` / 
`TableTTLIT`:
   - `flush()` at the **real** clock, *before* advancing the injected edge, so 
the procedure-based flush dispatches immediately;
   - use `TestUtil.majorCompact(getUtility(), table)` (a bounded, 
compaction-state-based wait) instead of `doMajorCompaction`'s raw-scan 
marker-row completion protocol (which additionally never terminates for a 
conditional-TTL table).
   
   No production code changes.
   
   ### Testing
   Verified locally under `-Dhbase.profile=2.6`: `CDCStreamCompactionTTLIT` → 
`Tests run: 1, Failures: 0, Errors: 0` in ~11s (previously hung to the CI 
timeout). The adopted idiom is HBase-2.5-aware (`TestUtil.majorCompact` 
explicitly handles the stopped-clock case), and PR CI exercises both the 2.5 
and 2.6 profiles.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to