Andrew Kyle Purtell created PHOENIX-7830:
--------------------------------------------

             Summary: De-flake MutableIndexFailureIT
                 Key: PHOENIX-7830
                 URL: https://issues.apache.org/jira/browse/PHOENIX-7830
             Project: Phoenix
          Issue Type: Sub-task
          Components: test
            Reporter: Andrew Kyle Purtell
            Assignee: Andrew Kyle Purtell
             Fix For: 5.4.0, 5.3.1


`MutableIndexFailureIT` has two independent bugs that cause flaky and cascading 
test failures. First, the outer class declares its own static volatile 
`FAIL_WRITE` field that shadows `FailingRegionObserver.FAIL_WRITE`, so the 
finally block in `testIndexWriteFailure` resets the dead outer field and leaves 
`FailingRegionObserver.FAIL_WRITE` stuck at true when the test fails mid-way, 
breaking subsequent tests in the same fork. Second, 
`FailingRegionObserver.TOGGLE_FAIL_WRITE_FOR_RETRY` is not declared volatile 
even though it is written by app threads in `addRowsInTableDuringRetry` and 
read by region server handler threads in `preBatchMutate`, so the RS thread can 
observe a stale false, miss the retry toggle, and surface a `CommitException` 
that fails the assertion. The fix removes the shadowed outer `FAIL_WRITE` 
field, retargets the finally block to reset `FailingRegionObserver.FAIL_WRITE`, 
and marks `FailingRegionObserver.TOGGLE_FAIL_WRITE_FOR_RETRY` volatile to 
guarantee cross-thread visibility.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to