Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-4950

Transaction failover authorisation is broken within UnifiedInvokerHAProxy

    XMLWordPrintable

    Details

    • Estimated Difficulty:
      Medium

      Description

      UnifiedInvokerHAProxy.invoke() only calls invocationHasReachedAServer(Invocation invocation)
      if GenericClusteringException is received and the exception is not GenericClusteringException.COMPLETED_NO

      This is not correct because invocationHasReachedAServer(Invocation invocation) needs to be called on
      successful returns as well. If we don't, the code never remembers that a call within a transaction was
      successful and therefore, never adds the potential transaction (with JBAS-4455, this will transaction propagation context)
      associated with the call to the failover map authorisations.

      Example:

      • ok call 1 within tx1
      • ok call 2 within tx1
      • ok call 3 within tx1
      • fail call 4 with GenericClusteringException.COMPLETED_NO

      None of the successfull calls updated the map, so when the 4 call occurs, txContextAllowsFailover(invocation) is called, but
      the map is empty, so would allow failover when it shouldn't. A transaction reached the server already in any of the previous
      calls associated with that transaction.

      JRMPInvokerProxyHA does not have this issue.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  galder.zamarreno Galder ZamarreƱo
                  Reporter:
                  galder.zamarreno Galder ZamarreƱo
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  0 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: