Hi all,

I'm about to commit the cache lock / passivation code finally working
properly (at least much better than before). 
Several bugs, included the "exception after sitting idle" should now be
fixed.
Few comments though:

1) The cache max capacity is the key parameter for container performance.
Normally if you have N concurrent clients for an entity bean class, a
minimum value for the max cache capacity is N / 2, suggested values are > N
* 2. Since now the locking mechanism is the same also for the passivation,
if the cache is too small the container performance degrades with the number
of concurrent clients, since invocations must wait for passivations. So
better have the max capacity large enough.

2) Overager period also influences container performances, since it
schedules passivations. Anyway it runs fine with period of 1 second,
suggested values are > 60 seconds but I would say no more than 300 seconds.

3) Sometimes I got the jBoss hangs since the connection pool is empty and no
connections are available. The pool blocks until a connection is returned
but this seems that does not happen, see an example stack trace below.
Anyone can help on this ?

4) The logger is deadly slow, we already saw it. When Debug log is turned
on, most of the time is spent logging, so for best performances turn off the
Debug logging.

5) I've also made some few class name changes, to better stick to a common
pattern (I should have noticed it before, my fault), so better you clean
checkout and clean build everything.

6) In the files I'm committing I changed the comment at the top of the class
to reflect the new license under which jBoss is distributed, don't know how
Marc wants to proceed  about this or if it is important.

Best Regards,

Simon


"Thread-1054" prio=5 tid=0x91e4df8 nid=0x9d8 waiting on monitor
[0x14f8f000..0x14f8fdc4]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Unknown Source)
        at org.jboss.minerva.pools.ObjectPool.getObject(ObjectPool.java:557)
        at
org.jboss.minerva.datasource.XAPoolDataSource.getConnection(XAPoolDataSource
.java:169)
        at
org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.getConnection(JDBCCommand.java:6
15)
        at
org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.jdbcExecute(JDBCCommand.java:150
)
        at
org.jboss.ejb.plugins.jaws.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntity
Command.java:77)
        at
org.jboss.ejb.plugins.jaws.JAWSPersistenceManager.loadEntity(JAWSPersistence
Manager.java:150)
        at
org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager
.java:277)
        at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchron
izationInterceptor.java:192)
        at
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterce
ptor.java:187)
        at
org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:133)
        at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.
java:263)
        at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
        at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:14
4)
        at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
        at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:323)
        at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerI
nvoker.java:163)
        at
org.jboss.ejb.plugins.jrmp.interfaces.EntityProxy.invoke(EntityProxy.java:16
9)
        at $Proxy5.getField(Unknown Source)
        at
org.jboss.test.bench.servlet.EJBTester$3$Worker.run(EJBTester.java:307)


Reply via email to