Bugs item #825942, was opened at 2003-10-18 16:29 Message generated for change (Comment added) made by esriram You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=376685&aid=825942&group_id=22866
Category: None Group: v3.2 Status: Closed Resolution: Fixed Priority: 5 Submitted By: E.Sriram (esriram) Assigned to: Scott M Stark (starksm) Summary: AutoNumberFactory not thread safe Initial Comment: The getNextInteger() method in the org.jboss.varia.autonumber.AutoNumberFactory is not thread safe. If multiple threads call this method the EJBHome.create() is getting called more than once which leads to a DuplicateKeyException. Stack trace given below. The fix will be to do a create in a synchronized block. --E.Sriram 18:38:32:145] [09-08-2003] [syserr] [INFO] [14] : javax.ejb.DuplicateKeyException: Entity with primary key Address.ADDRESSID already exists [18:38:32:145] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.execute(JDBCCreateEntityCommand.java:205) [18:38:32:146] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManager.java:569) [18:38:32:147] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:225) [18:38:32:147] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createEntity(CachedConnectionInterceptor.java:270) [18:38:32:148] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.EntityContainer.createHome(EntityContainer.java:725) [18:38:32:148] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.GeneratedMethodAccessor77.invoke(Unknown Source) [18:38:32:148] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [18:38:32:148] [09-08-2003] [syserr] [INFO] [14] : at java.lang.reflect.Method.invoke(Method.java:324) [18:38:32:149] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:998) [18:38:32:149] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88) [18:38:32:149] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:188) [18:38:32:149] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:215) [18:38:32:150] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88) [18:38:32:150] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:91) [18:38:32:150] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:61) [18:38:32:150] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:28) [18:38:32:151] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:88) [18:38:32:151] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243) [18:38:32:151] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:74) [18:38:32:151] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.authentication.interceptor.SecurityInterceptor.invokeHome(SecurityInterceptor.java:94) [18:38:32:152] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120) [18:38:32:152] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88) [18:38:32:152] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93) [18:38:32:267] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:477) [18:38:32:268] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.Container.invoke(Container.java:694) [18:38:32:268] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source) [18:38:32:269] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [18:38:32:269] [09-08-2003] [syserr] [INFO] [14] : at java.lang.reflect.Method.invoke(Method.java:324) [18:38:32:269] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) [18:38:32:269] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549) [18:38:32:270] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:101) [18:38:32:270] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:83) [18:38:32:270] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46) [18:38:32:270] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.authentication.interceptor.ClientPrincipalAssociator.invoke(ClientPrincipalAssociator.java:44) [18:38:32:271] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:173) [18:38:32:271] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85) [18:38:32:271] [09-08-2003] [syserr] [INFO] [14] : at $Proxy36.create(Unknown Source) [18:38:32:271] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.varia.autonumber.AutoNumberFactory.getNextInteger(AutoNumberFactory.java:60) [18:38:32:272] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.db.persistence.LongSequenceGenerator.nextValue(LongSequenceGenerator.java:29) [18:38:32:272] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.persistence.DataAccess.generateValues(DataAccess.java:2049) [18:38:32:272] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.persistence.DataAccess.insertRows(DataAccess.java:2136) [18:38:32:272] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.persistence.DataAccess.add(DataAccess.java:196) [18:38:32:273] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.nms.topo.ejb.internal.TopoBean.addResource(TopoBean.java:182) [18:38:32:273] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [18:38:32:273] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [18:38:32:273] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [18:38:32:274] [09-08-2003] [syserr] [INFO] [14] : at java.lang.reflect.Method.invoke(Method.java:324) [18:38:32:274] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:629) [18:38:32:376] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186) [18:38:32:377] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.AbstractInterceptor.invoke(AbstractInterceptor.java:94) [18:38:32:377] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:72) [18:38:32:377] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84) [18:38:32:378] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243) [18:38:32:378] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104) [18:38:32:378] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.authentication.interceptor.SecurityInterceptor.invoke(SecurityInterceptor.java:122) [18:38:32:379] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191) [18:38:32:379] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.logging.tracing.TracingInterceptor.invoke(TracingInterceptor.java:45) [18:38:32:379] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122) [18:38:32:379] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java:322) [18:38:32:380] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.ejb.Container.invoke(Container.java:674) [18:38:32:380] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source) [18:38:32:380] [09-08-2003] [syserr] [INFO] [14] : at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [18:38:32:380] [09-08-2003] [syserr] [INFO] [14] : at java.lang.reflect.Method.invoke(Method.java:324) [18:38:32:381] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) [18:38:32:381] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549) [18:38:32:381] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:101) [18:38:32:381] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:83) [18:38:32:382] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46) [18:38:32:382] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.authentication.interceptor.ClientPrincipalAssociator.invoke(ClientPrincipalAssociator.java:44) [18:38:32:382] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:100) [18:38:32:382] [09-08-2003] [syserr] [INFO] [14] : at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85) [18:38:32:383] [09-08-2003] [syserr] [INFO] [14] : at $Proxy78.addResource(Unknown Source) [18:38:32:526] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.nms.topo.discovery.wf.network.task.NetworkDiscoveryStartTask.modelNetwork(NetworkDiscoveryStartTask.java:338) [18:38:32:526] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.nms.topo.discovery.wf.network.task.NetworkDiscoveryStartTask.executeTask(NetworkDiscoveryStartTask.java:89) [18:38:32:527] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.workengine.task.internal.TaskManagerImpl.executeTask(TaskManagerImpl.java:343) [18:38:32:527] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.workengine.task.internal.TaskManagerImpl.executeTask(TaskManagerImpl.java:85) [18:38:32:527] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.workengine.executor.internal.WorkFlowExecutor.executeTask(WorkFlowExecutor.java:333) [18:38:32:527] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.workengine.executor.internal.WorkFlowExecutor.controlWorkFlow(WorkFlowExecutor.java:182) [18:38:32:528] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.workengine.executor.internal.WorkFlowExecutor.executeWorkFlowTemplate(WorkFlowExecutor.java:119) [18:38:32:528] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.workengine.executor.internal.WorkFlowExecutor.executeWorkFlow(WorkFlowExecutor.java:93) [18:38:32:528] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.workengine.internal.WorkEngineImpl$WorkFlowExecutorThread.run(WorkEngineImpl.java:675) [18:38:32:528] [09-08-2003] [syserr] [INFO] [14] : at com.adventnet.workengine.threadpool.ThreadPool$WorkerThread.run(ThreadPool.java:299) ---------------------------------------------------------------------- >Comment By: E.Sriram (esriram) Date: 2003-11-10 11:02 Message: Logged In: YES user_id=694460 I feel that synchronizing the whole method will be an overkill. It would be very good if home.create() alone is synchronized. We have several threads each using the AutoNumberFactory for generating numbers. The synchronization for the same autonumber collection name (primary Key) will be handled by the EJB Container. Synchronization of the whole method will involve synchronization across PKs, which will be a serious performance bottleneck. Please reconsider you view on the bug fix. thanks, E.Sriram thanks, E.Sriram ---------------------------------------------------------------------- Comment By: Scott M Stark (starksm) Date: 2003-11-10 05:15 Message: Logged In: YES user_id=175228 The class methods have been synchronized. ---------------------------------------------------------------------- Comment By: E.Sriram (esriram) Date: 2003-10-18 16:30 Message: Logged In: YES user_id=694460 The exact JBoss version is 3.2.1 ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=376685&aid=825942&group_id=22866 ------------------------------------------------------- This SF.Net email sponsored by: ApacheCon 2003, 16-19 November in Las Vegas. Learn firsthand the latest developments in Apache, PHP, Perl, XML, Java, MySQL, WebDAV, and more! http://www.apachecon.com/ _______________________________________________ JBoss-Development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development
