-
Type: Improvement
-
Status: Open
-
Priority: Minor
-
Resolution: Unresolved
-
Affects Version/s: 6.0, 7.2
-
Fix Version/s: QualifiedToSchedule
-
Component/s: Runtime
-
Tags:
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