Bugs item #885095, was opened at 2004-01-27 01:09
Message generated for change (Comment added) made by techtime
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=885095&group_id=22866
Category: JBossCX
Group: v3.2
Status: Open
Resolution: None
Priority: 5
Submitted By: Dag Liodden (daggerrz)
Assigned to: Nobody/Anonymous (nobody)
Summary: Synchronization errors in pooling implementation?
Initial Comment:
Hi,
We're running JBoss 3.2.3 with an Oracle XA datasource
pooled witht the standard JBoss implementation. From
time to time, the database goes down which results in
several timeout exceptions from
org.jboss.resource.adapter.jdbc.WrapperDataSource.get
Connection(WrapperDataSource.java:106) which of
course is to be expected. In most cases things get back
to normal when the database gets back up. Good.
However, after this has happened a couple of times (we
think it depends on the number of times connections are
requested and unable to be served), we get this
stacktrace:
java.lang.ArrayIndexOutOfBoundsException: 10
at
org.jboss.resource.connectionmanager.InternalManagedC
onnectionPool.getConnection
(InternalManagedConnectionPool.java:163)
at
org.jboss.resource.connectionmanager.JBossManagedCon
nectionPool$BasePool.getConnection
(JBossManagedConnectionPool.java:496)
at
org.jboss.resource.connectionmanager.BaseConnectionM
anager2.getManagedConnection
(BaseConnectionManager2.java:425)
at
org.jboss.resource.connectionmanager.TxConnectionMan
ager.getManagedConnection
(TxConnectionManager.java:318)
at
org.jboss.resource.connectionmanager.BaseConnectionM
anager2.allocateConnection
(BaseConnectionManager2.java:477)
at
org.jboss.resource.connectionmanager.BaseConnectionM
anager2$ConnectionManagerProxy.allocateConnection
(BaseConnectionManager2.java:814)
at
org.jboss.resource.adapter.jdbc.WrapperDataSource.get
Connection(WrapperDataSource.java:102)
at our.implementation.class.method(x)
at sun.reflect.GeneratedMethodAccessor69.invoke
(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterc
eptor.invoke(StatelessSessionContainer.java:683)
at
org.jboss.resource.connectionmanager.CachedConnectio
nInterceptor.invoke
(CachedConnectionInterceptor.java:185)
at
org.jboss.ejb.plugins.StatelessSessionInstanceIntercepto
r.invoke(StatelessSessionInstanceInterceptor.java:72)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext
(AbstractTxInterceptor.java:84)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransacti
ons(TxInterceptorCMT.java:267)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke
(TxInterceptorCMT.java:128)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke
(SecurityInterceptor.java:118)
at org.jboss.ejb.plugins.LogInterceptor.invoke
(LogInterceptor.java:191)
at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invok
e(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.StatelessSessionContainer.internalInvoke
(StatelessSessionContainer.java:331)
at org.jboss.ejb.Container.invoke(Container.java:700)
at sun.reflect.GeneratedMethodAccessor65.invoke
(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke
(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke
(MBeanServerImpl.java:546)
at org.jboss.invocation.local.LocalInvoker.invoke
(LocalInvoker.java:101)
at org.jboss.invocation.InvokerInterceptor.invoke
(InvokerInterceptor.java:90)
at org.jboss.proxy.TransactionInterceptor.invoke
(TransactionInterceptor.java:46)
at org.jboss.proxy.SecurityInterceptor.invoke
(SecurityInterceptor.java:45)
at
org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke
(StatelessSessionInterceptor.java:100)
at org.jboss.proxy.ClientContainer.invoke
(ClientContainer.java:85)
at $Proxy69.getDispatchRouteUpdates(Unknown Source)
at
com.glt.paperdist.backend.scheduletasks.BTDispatchDeliv
eryPollerTask.perform
(BTDispatchDeliveryPollerTask.java:30)
at
org.jboss.varia.scheduler.Scheduler$Listener.handleNotifi
cation(Scheduler.java:1263)
at
org.jboss.mx.server.NotificationListenerProxy.handleNotifi
cation(NotificationListenerProxy.java:69)
at
javax.management.NotificationBroadcasterSupport.sendN
otification(NotificationBroadcasterSupport.java:95)
at javax.management.timer.Timer.sendNotifications
(Timer.java:441)
at javax.management.timer.Timer.access$90
(Timer.java:31)
at
javax.management.timer.Timer$RegisteredNotification.do
Run(Timer.java:612)
at org.jboss.mx.util.SchedulableRunnable.run
(SchedulableRunnable.java:164)
at org.jboss.mx.util.ThreadPool$Worker.run
(ThreadPool.java:225)
The pool has a max size of 10, so index 10 is of course
invalid on InternalManagedConnectionPool on line 163:
cl = cls[currentPoolIndex];
I see no code in InternalManagedConnectionPool that
can cause the index to exceed maxSize since there are
only two assignments to currentPoolIndex and they are
1. syncrhonized and 2. cls[++currentPoolIndex] = cl; so
that the out-of-bounds exception should have occured
here. Very strange.
In any case, there is something wrong - the MBean
(belongs to the wrapping JBossManagedConnectionPool)
currently shows that there are -18 connections in use...
I would guess that there is some sort synchronization
error in there somewhere. The current HEAD shows that
the implementation of InternalManagedConnectionPool
has changed quite a bit since the 3.2.3 branch. For
instance, it no longer uses an array for holding the
ConnectionListeners. We do not have the opportunity to
test HEAD, but if these changes fixes our problems, I
would suggest that it should be backported to 3.2.3. :)
Cheers,
Dag Liodden
----------------------------------------------------------------------
Comment By: Eduard Letifov (techtime)
Date: 2004-02-09 19:04
Message:
Logged In: YES
user_id=438410
We seem to have simular problem also with Oracle XA on HP-
UX under load. In our case the pool is set to 30 and the
database doesn't go "down", but here is what we get in the
log (non-jboss part trimmed):
java.lang.ArrayIndexOutOfBoundsException: 30
at
org.jboss.resource.connectionmanager.InternalManagedConnec
tionPool.getConnection
(InternalManagedConnectionPool.java:162)
at
org.jboss.resource.connectionmanager.JBossManagedConnecti
onPool$BasePool.getConnection
(JBossManagedConnectionPool.java:496)
at
org.jboss.resource.connectionmanager.BaseConnectionManage
r2.getManagedConnection(BaseConnectionManager2.java:425)
at
org.jboss.resource.connectionmanager.TxConnectionManager.g
etManagedConnection(TxConnectionManager.java:318)
at
org.jboss.resource.connectionmanager.BaseConnectionManage
r2.allocateConnection(BaseConnectionManager2.java:477)
at
org.jboss.resource.connectionmanager.BaseConnectionManage
r2$ConnectionManagerProxy.allocateConnection
(BaseConnectionManager2.java:814)
at
org.jboss.resource.adapter.jdbc.WrapperDataSource.getConne
ction(WrapperDataSource.java:102)
I see this was submitted pretty recently, is there any chance
someone would look at this problem and at least indicate a
direction on how to fix it?
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=885095&group_id=22866
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development