SENTRY-1983: Several commit/rollback errors happen in oracle12c-r1 due to current isolation level (Sergio Pena, reviewed by Alexander Kolbasov)
Project: http://git-wip-us.apache.org/repos/asf/sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/18634c18 Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/18634c18 Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/18634c18 Branch: refs/heads/akolb-cli Commit: 18634c182f7900d3e672113be4282650c31c7a41 Parents: 3d0f470 Author: Sergio Pena <[email protected]> Authored: Fri Oct 13 09:32:35 2017 -0500 Committer: Sergio Pena <[email protected]> Committed: Fri Oct 13 09:32:35 2017 -0500 ---------------------------------------------------------------------- .../provider/db/service/persistent/SentryStore.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sentry/blob/18634c18/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java ---------------------------------------------------------------------- diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java index 9a37ac8..f4d84d2 100644 --- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java +++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/persistent/SentryStore.java @@ -220,10 +220,9 @@ public class SentryStore { prop.setProperty(ServerConfig.JAVAX_JDO_DRIVER_NAME, driverName); /* - * Oracle doesn't support "repeatable-read" isolation level, so we use* "serializable" instead. This should be handled by Datanucleus, but it - * incorrectly states that "repeatable-read" is supported and Oracle barks - * at run-time. This code is a hack, but until it is fixed in Datanucleus - * we can't do much. + * Oracle doesn't support "repeatable-read" isolation level and testing + * showed issues with "serializable" isolation level for Oracle 12, + * so we use "read-committed" instead. * * JDBC URL always looks like jdbc:oracle:<drivertype>:@<database> * we look at the second component. @@ -236,9 +235,9 @@ public class SentryStore { jdbcUrl.contains(oracleDb)) { String[] parts = jdbcUrl.split(":"); if ((parts.length > 1) && parts[1].equals(oracleDb)) { - // For Oracle JDBC driver, replace "repeatable-read" with "serializable" + // For Oracle JDBC driver, replace "repeatable-read" with "read-committed" prop.setProperty(ServerConfig.DATANUCLEUS_ISOLATION_LEVEL, - "serializable"); + "read-committed"); } }
