소스 검색

AMBARI-15246. Set MySQL transaction isolation level to READ_COMMITTED. (mpapirkovskyy)

Myroslav Papirkovskyi 9 년 전
부모
커밋
4fde93a2a1
1개의 변경된 파일8개의 추가작업 그리고 2개의 파일을 삭제
  1. 8 2
      ambari-server/src/main/java/org/apache/ambari/server/orm/EclipseLinkSessionCustomizer.java

+ 8 - 2
ambari-server/src/main/java/org/apache/ambari/server/orm/EclipseLinkSessionCustomizer.java

@@ -20,6 +20,8 @@ package org.apache.ambari.server.orm;
 import javax.activation.DataSource;
 
 import org.eclipse.persistence.config.SessionCustomizer;
+import org.eclipse.persistence.platform.database.MySQLPlatform;
+import org.eclipse.persistence.sessions.DatabaseLogin;
 import org.eclipse.persistence.sessions.JNDIConnector;
 import org.eclipse.persistence.sessions.Session;
 
@@ -49,10 +51,14 @@ public class EclipseLinkSessionCustomizer implements SessionCustomizer {
   /**
    * {@inheritDoc}
    * <p/>
-   * Currently a NOOP, this class exists for quick customization purposes.
+   * This class exists for quick customization purposes.
    */
   @Override
   public void customize(Session session) throws Exception {
-    // NOOP
+    //Override transaction isolation level for MySQL to match EclipseLink shared cache behavior
+    DatabaseLogin databaseLogin = (DatabaseLogin) session.getDatasourceLogin();
+    if (databaseLogin.getDatasourcePlatform() instanceof MySQLPlatform) {
+      databaseLogin.setTransactionIsolation(DatabaseLogin.TRANSACTION_READ_COMMITTED);
+    }
   }
 }