Known Problem Alert: Microsoft .NET Framework 2.0 Service Pack 2 and Oracle 10g

Known Problem Alert: Microsoft .NET Framework 2.0 Service Pack 2 and Oracle 10g

  
Hi All

There's a known problem recently detected with a behavioral change of the Microsoft .Net Framework 2.0 Service Pack 2, that impacts the OutSystems Platform 4.1 running over Oracle 10g installations. This behavioral change has been identified as a Microsoft .Net Framework problem and as such, we've reported this mis-behavior to the Microsoft Developer Support team, were its being addressed (check Microsoft thread here).

Please note that this problem only affects the release 4.1 of the OutSystems Platform, since previous releases of the OutSystems Platform (3.x and 4.0) uses Microsoft .Net Framework 1.1, and where the release 4.1 already uses the Microsoft .Net Framework 2.0.

Symptoms:

Any Oracle transaction that is aborted due to some rollback condition (error or logic) that includes insert/update/delete operations, won't really rollback the data changes, causing possible data corruption/inconsistencies on the existent data model. This problem is horizontal to the entire OutSystems Platform and applications, which may impair normal platform functionalities, like 1-CP, Licensing, Debbugging, Logging, SMS Flows, and many other runtime features (like Site Properties, Timers, Web Services, etc), and it can also impair specific application's logic that uses data change queries on the applications' database.
Also note that if you use the managed Oracle provider System.Data.OracleClient in an extension, you may also suffer of the same mis-behaviors.

Cause:

The problem is that every insert/update/delete operation within and Oracle transaction are now being auto-committed, where it use to only be committed/rollbacked at the end of the transaction. This only start happening with the Microsoft .Net framework 2.0 Service Pack 2 managed Oracle provider System.Data.OracleClient and it affects transactions of type ReadCommitted and Serializable. The OutSystems Platform entire database transaction management uses transactions of type ReadCommitted, being susceptible to this behavioral change.

Resolution:

Currently, there's no resolution to avoid this problem when using the Microsoft .Net Framework 2.0 Service Pack 2. As such, the workaround is to not install the Microsoft .Net Framework 2.0 Service Pack 2 on OutSystems Platform servers.

The Microsoft .NET Framework 2.0 Service Pack 2 is currently only available through the Installation of the Microsoft .NET 3.5 Service Pack 1, and for now it shouldn't be available in the windows automatic updates.

Nevertheless, we would like to remind you to avoid installing the Microsoft .NET Framework 2.0 Service Pack 2 in your OutSystems environments, if and when it becomes generally available, until Microsoft releases a fix for this particular problem.

Post Edit: If you use this managed provider in your .NET Framework 2.0 extensions, you can change the isolation level to unspecified. It should overcome the problem.


-----------------------------------------------------
Best Regards

Miguel Simões João

Also note that besides being included in the .NET Framework 3.5 SP1, the .NET Framework 2.0 SP2 is also a prerequisite for SQL Server 2008 and is installed by it.

Best Regards,
Gustavo Guerra
Hi All

We have information that Microsoft is addressing this problem, and a fix will be provided, although there's still no confirmed date for it.

We will keep updating this thread with new information whenever possible.

Cheers

Miguel João
Hi All

Our joint work with Microsoft yielded a fix for the .NET Framework v2.0 Service Pack 2 (and .NET Framework 3.5 Service Pack 1), which is now available for download at http://www.microsoft.com/downloads/details.aspx?FamilyID=6c095bba-6100-4ec9-9c54-6450b0212565&DisplayLang=en, and addresses the Oracle transaction management problem.

Our tests confirm the problem resolution at the managed Oracle provider System.Data.OracleClient, as expected.

Cheers
Hello All

I'm bumping up this post, because we seem to have several reports of this problem in Oracle based .NET stack installations, or .NET stack installations that integrate with Oracle databases.

Although the problem is solved by Microsoft, it's not included in the Service Pack 2 of the .NET Framework 2.0, and it requires to install the compatibility issues update for the .NET Framework. If you check closely the Service Pack 2.0 download page at Microsoft, it includes the following note:

IMPORTANT: After installing the .NET Framework 2.0 SP2 update you should immediately install the update KB959209 to address a set of known application compatibility issues. 

Please note that KB959209 contains updates for several operating systems and architectures so you should be careful to only download and install the 2.0 Service Pack 2 update corresponding to your platform.

Well, this is in fact important, because without this fix, all transactions will be auto-committed, and never rolled back, even when errors occur at the application level.

Another note is that this problem affects all applications in .NET Framework that use the Microsoft data provider for Oracle, and thus the Agile Platform since version 4.1 and above.

Cheers