Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-7943

Fix Oracle tightly-coupled transaction optimization XA bug

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.3 GA
    • Fix Version/s: 5.5
    • Component/s: Core VCS

      Description

      When using XA with more than one resource, Oracle by default uses a "tightly-coupled transaction" mode for the various transaction branches of the resources. In this mode, all the resources except the last one return XA_RDONLY when prepare() is called, and only for the last resource does prepare() return XA_OK thus triggering the normal commit(). This is likely done to avoid doing one more round-trip to the database per resource.

      However it means that receiving XA_RDONLY from prepare() does not necessarily mean that no work was done by the resource, so there may still be invalidations that have to be sent.

      See http://docs.oracle.com/cd/E14072_01/appdev.112/e10471/adfns_xa.htm#ADFNS810 for reference.

      A consequence of not sending invalidations is that data may appear inconsistent between two session.

      Note that this bug only happens with two or more XA resources, which can only be the case with two or more VCS repositories, or a VCS repository and a XA JDBC datasource.

        Attachments

          Activity

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: