dennishuo opened a new pull request, #1092: URL: https://github.com/apache/polaris/pull/1092
This fixes https://github.com/apache/polaris/issues/1076 Explicitly set transaction isolation level to SERIALIZABLE and set eclipselink.transaction.join-existing Set the Isolation level in both a new EclipseLink SessionCustomizer as well as providing default postgresql.conf and injecting it in the getting-started docker-compose. Set eclipselink.transaction.join-existing in persistence.xml to force reads to go through the same write connection per EntityManager session, otherwise reads are not consistent with writes in a transaction. Only call rollback() if the transaction is still active, otherwise we get 500 server errors. Fix handling of non-SUCCESS ReturnStatus in BasePolarisCatalog for createTableLike/updateTableLike Without this fix, even if the underlying database layer does the right thing in resolving concurrency conflicts, the API call will incorrectly return a 200 success. This isn't too common of a race condition under normal operation since BasePolarisCatalog does redundant state-checking right before the transaction (which maybe should be removed in the future for performance), but in theory this bug indeed could've caused dropped writes under high concurrency. -- 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]
