PQ83549: The last isolation level set on a physical connection takes precedence (this can be unexpected for shared connections).

 A fix is available

5.1.0.5: WebSphere Application Server V5.1.0 Cumulative Fix 5



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.commit
Problem conclusion
Adding tracking for isolation levels on a per statement basis.
Temporary fix Comments
APAR information
APAR number PQ83549
Reported component name WAS BASE 5.0
Reported component ID 5630A3600
Reported release 00W
Status CLOSED PER
PE NoPE
HIPER NoHIPER
Special Attention NoSpecatt
Submitted date 2004-01-21
Closed date 2004-02-04
Last modified date 2006-02-07

APAR is sysrouted FROM one or more of the following:

APAR is sysrouted TO one or more of the following:

Modules/Macros
RRA          

Publications Referenced

Fix information

Applicable component levels
R003 PSY    UP
R00A PSY    UP
R00H PSY    UP
R00I PSY    UP
R00P PSY    UP
R00S PSY    UP
R00W PSY    UP
R103 PSY    UP
R10A PSY    UP
R10H PSY    UP
R10I PSY    UP
R10P PSY    UP
R10S PSY    UP
R10W PSY    UP


Document Information


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