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

ConnectionTrackingCoordinator should be optional

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 6.0, 7.2
    • Fix Version/s: QualifiedToSchedule
    • Component/s: Runtime

      Description

      The leaked connection tracker should be optional because it has a performance impact:

      • it generates an Exception to get the code path for each getConnection
        java.lang.Throwable.<init>(String)	230 678
        org.nuxeo.runtime.jtajca.NuxeoContainer$ConnectionTrackingCoordinator$Context$Allocation.<init>(ConnectionInfo)	230 678
        org.nuxeo.runtime.jtajca.NuxeoContainer$ConnectionTrackingCoordinator.handleObtained(ConnectionTrackingInterceptor, ConnectionInfo, boolean)	230 678
        org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor.getConnection(ConnectionInfo)	230 678
        org.apache.geronimo.connector.outbound.AbstractConnectionManager.allocateConnection(ManagedConnectionFactory, ConnectionRequestInfo)	230 678
        org.nuxeo.runtime.jtajca.NuxeoContainer$ConnectionManagerWrapper.allocateConnection(ManagedConnectionFactory, ConnectionRequestInfo)	230 678
        

        Note that geronimo also keep a code path:

        java.lang.Exception.<init>(String)	243 896
        org.apache.geronimo.connector.outbound.ConnectionInfo.setTrace()	230 673
        org.apache.geronimo.connector.outbound.ConnectionHandleInterceptor.getConnection(ConnectionInfo)	230 673
        org.apache.geronimo.connector.outbound.TCCLInterceptor.getConnection(ConnectionInfo)	230 673
        org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor.getConnection(ConnectionInfo)	230 673
        org.apache.geronimo.connector.outbound.AbstractConnectionManager.allocateConnection(ManagedConnectionFactory, ConnectionRequestInfo)	230 673      org.nuxeo.runtime.jtajca.NuxeoContainer$ConnectionManagerWrapper.allocateConnection(ManagedConnectionFactory, ConnectionRequestInfo)	230 673
        
      • it uses a finalyzer which is bad for GC perf.
      • The geronimo ConnectionInfo.toString() call a ManagedConnectionInfo.toString() which allocates tons of strings

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              bdelbosc Benoit Delbosc
              Participants:
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: