Re: cannot get element in pool

"Hans J. Prueller" <[email protected]> Thu, 17 Feb 2011 07:54:41 +0100
Newsgroups gmane.comp.java.objectweb.jonas
Organization LBS logics GmbH
Message-ID <1297925681.2133.6.camel@kodos>
hi all,

obviously the source exception is: 

Caused by: org.ow2.util.pool.impl.enhanced.api.TimeoutPoolException

but there is only 1 user on my testmachine (myself) doing single clicks
-- there is absolutely no load on the system.

What else could cause this TimeoutPoolException ?

 - e.g. if a business method of an SLSB takes too long?

- or probably this error occurs slightly before an outofmemory error or
similar?


Would that timeout be configurable somewhere?

regards,
Hans




Am Mittwoch, den 16.02.2011, 21:47 +0100 schrieb Hans J. Prueller:

> hi all,
> 
> we have successfully migrated our existing java 2 ee 1.4 based EAR to
> Java ee 5 and JOnAS 5.2 (pre-m4).
> 
> I can deploy the EAR without errors and login to the contained webapp
> and do some clicks. After some time
> 
> the following error occurs:
> 
> javax.ejb.EJBException: java.lang.IllegalArgumentException: Cannot get
> element in the pool
> at
> org.ow2.easybeans.proxy.client.AbsInvocationHandler.handleThrowable(AbsInvocationHandler.java:176)
> at
> org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(ClientRPCInvocationHandler.java:218)
> at
> org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(ClientRPCInvocationHandler.java:111)
> at $Proxy112.checkSpammingDevices(Unknown Source)
> at
> com.lbslogics.ims.servlet.job.JobCheckSpammingDevice.execute(JobCheckSpammingDevice.java:41)
> at org.quartz.core.JobRunShell.run(JobRunShell.java:191)
> at org.quartz.simpl.SimpleThreadPool
> $WorkerThread.run(SimpleThreadPool.java:516)
> Caused by: java.lang.IllegalArgumentException: Cannot get element in
> the pool
> at
> org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.getBean(StatelessSessionFactory.java:107)
> at
> org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.localCall(StatelessSessionFactory.java:124)
> at
> org.ow2.easybeans.container.session.SessionFactory.rpcInvoke(SessionFactory.java:233)
> at
> org.ow2.easybeans.rpc.rmi.server.RMIServerRPCImpl.getEJBResponse(RMIServerRPCImpl.java:106)
> at sun.reflect.GeneratedMethodAccessor150.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
> at
> org.ow2.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnicastServerRef.java:167)
> at sun.rmi.transport.Transport$1.run(Transport.java:159)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
> at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
> at sun.rmi.transport.tcp.TCPTransport
> $ConnectionHandler.run0(TCPTransport.java:790)
> at sun.rmi.transport.tcp.TCPTransport
> $ConnectionHandler.run(TCPTransport.java:649)
> at java.util.concurrent.ThreadPoolExecutor
> $Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor
> $Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: org.ow2.util.pool.api.PoolException: No more instances
> available
> at
> org.ow2.util.pool.impl.enhanced.EnhancedPool.get(EnhancedPool.java:201)
> at
> org.ow2.easybeans.container.session.PoolWrapper.get(PoolWrapper.java:71)
> at
> org.ow2.easybeans.container.session.PoolWrapper.get(PoolWrapper.java:40)
> at
> org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.getBean(StatelessSessionFactory.java:105)
> ... 17 more
> Caused by: org.ow2.util.pool.impl.enhanced.api.TimeoutPoolException
> at
> org.ow2.util.pool.impl.enhanced.impl.keepbusy.KeepBusyPool.get(KeepBusyPool.java:229)
> at
> org.ow2.util.pool.impl.enhanced.impl.limited.LimitedWaiterPool.get(LimitedWaiterPool.java:70)
> at
> org.ow2.util.pool.impl.enhanced.EnhancedPool.get(EnhancedPool.java:197)
> ... 20 more
> 
> 
> 
> Can you give me a hint what this means? I am working on my development
> workstation, freshly deployed the EAR and have tested
> the webapp with a single user, doing single click after click -- so
> how could I reach "no more instances available" from the pool 
> with a single user?
> 
> 
> I guess I found the SLSB that makes these problems and looked at
> deployment info in jonasAdmin which says:
> 
> Monitoring
>     numberOfCalls
>  
> 0
> 
> totalBusinessProcessingTime
>  
> 0
> 
> averageBusinessProcessingTime
>  
> 0
> 
>     poolItemsBusy
>  
> 0
> 
> poolItemsAvailable
>  
> 0
> 
>           poolMin
>  
> 0
> 
>           poolMax
>  
> -1
> 
>         poolSpare
>  
> 15
> 
>    poolMaxWaiters
>  
> 1000
> 
> so - poolItemsAvailable is really zero  - for the other EJB's this is
> in most cases 15.  
> 
> Any idea what the problem could be?
> 
> regards,
> hans
>