PQ83549: The last isolation level set on a physical connection takes precedence (this can be unexpected for shared connections). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() APAR status Closed as program error. Error description If an application uses sharable connections and gets the same physical connection with different isolation levels set, only the last isolation level will take effect. This defect resolves the issue. . Isolation level switching cannot be done for JDBC as currently implemented because it leads to data integrity problems in scenarios such as the following: globalTran.begin conn1 = getConnection( Serializable ) conn1.doWork [application expects Serializable] conn2 = getConnection( Read Committed ) [isolation on shared MC switched to Read Committed] conn2.doWork [application expects Read Committed] conn1.doWork [application expects Serializable but gets Read Committed] globalTran.commit In the above example, the isolation level is switched to Read Committed after performing work on the shared ManagedConnection for handle conn2. When conn1 does more work using the shared ManagedConnection, it ends up with Read Committed in a situation where the application is expecting Serializable, introducing a potential data integrity problem. . This is cmvc defect 187440.Local fix Problem summary **************************************************************** * USERS AFFECTED: WebSphere Application Server users of v5.0 * * DataSources that dynamically set isolation * * levels on a Connection. * **************************************************************** * PROBLEM DESCRIPTION: If an application uses sharable * * Connections it can acquire two * * connection handles to the same * * physical connection to a database. In * * this case if the application were to * * get the connections with different * * isolation levels the last iso level * * would take effect (since it is set on * * the physical connection). * **************************************************************** * RECOMMENDATION: * **************************************************************** For example : globalTran.begin conn1 = getConnection( Serializable ) conn1.doWork [application expects Serializable] conn2 = getConnection( Read Committed ) [isolation on shared MC switched to Read Committed] conn2.doWork [application expects Read Committed] conn1.doWork [application expects Serializable but gets Read Committed] globalTran.commitProblem conclusion Adding tracking for isolation levels on a per statement basis.Temporary fix Comments
APAR is sysrouted FROM one or more of the following: APAR is sysrouted TO one or more of the following: Modules/Macros
Publications Referenced
|
Product categories: Software > Application Servers >
Distributed Application & Web Servers > WebSphere Application
Server > General
Operating system(s):
Software version: 00W
Software edition:
Reference #: PQ83549
IBM Group: Software Group
Modified date: Feb 7, 2006
(C) Copyright IBM Corporation 2000, 2008. All Rights Reserved.