Andrew Kyle Purtell created PHOENIX-7817:
--------------------------------------------

             Summary: OMID transaction singleton view to survive cluster cycles
                 Key: PHOENIX-7817
                 URL: https://issues.apache.org/jira/browse/PHOENIX-7817
             Project: Phoenix
          Issue Type: Sub-task
          Components: omid, test
            Reporter: Andrew Kyle Purtell
            Assignee: Andrew Kyle Purtell
             Fix For: 5.4.0, 5.3.1


{{OmidTransactionClient}} captures the provider's {{HBaseTransactionManager}} 
at construction time. {{OmidTransactionContext}} in turn caches that same 
reference in a private field. When a prior test class shuts down OMID's TSO 
together with its mini-cluster, the next test class reuses the stale wrapper 
and is dispatched to the dead executor. The symptom is a 
{{RejectedExecutionException}} originating from the OMID {{TSOClient}} 
state-machine executor.
 
In production the singleton's manager is set exactly once and never replaced, 
but the test framework exercises the swap path between classes within a single 
Surefire/Failsafe fork.
 
Fix:
 
{{OmidTransactionProvider.OmidTransactionClient}} becomes a thin view onto the 
singleton's current {{{}HBaseTransactionManager{}}}. It resolves
{{provider.transactionManager}} on every call to 
{{{}getTransactionClient(){}}}. {{transactionManager}} is marked volatile so 
test-framework injection is published to other threads without synchronization.

In production the dynamic lookup is functionally identical to caching.



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

Reply via email to