hapi-fhir/hapi-fhir-jpaserver-base
Ibrahim e43c140a24
Refactor BaseHapiFhirDao.getOrCreateTag method to run in a separate thread for XA transaction compatibility (#6224)
* Fix typo in docs.

* Refactor the use of ConcurrentTaskScheduler to use the non-deprecated constructor.

* Refactor getOrCreateTag method to prevent transaction suspension for XA transaction compatibility

    The getOrCreateTag method previously used a propagation behavior that caused issues with
    XA transactions when using the PostgreSQL JDBC driver. The PGXAConnection does not support
    transaction suspend/resume, which made it incompatible with the existing propagation strategy
    'PROPAGATION_REQUIRES_NEW'.

    This refactor changes the getOrCreateTag logic to perform a lookup/write in a new transaction
    as before, but running in a separate thread, such that the main transaction is not suspended.
    The result is retrieved through a future.

    This change aims to improve compatibility and prevent transaction-related issues when using HAPI-FHIR with
    XA transactions and PostgreSQL.

    Closes #3412

* Refactor tag creation logic and handle concurrent access:

- Simplified tag creation by removing unnecessary transaction complexity, since we allow duplicate tags in hfj_tag_def from #4813
- Removed redundant retry logic based on updated DB constraints
2024-10-30 10:06:45 -04:00
..
src Refactor BaseHapiFhirDao.getOrCreateTag method to run in a separate thread for XA transaction compatibility (#6224) 2024-10-30 10:06:45 -04:00
.gitignore Remove redundant files 2016-09-21 16:59:43 -04:00
pom.xml Bump For February Release (#6392) 2024-10-21 21:03:07 -07:00