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

Reply via email to