Hi Armin,
thanks for looking into this!
On Fri, 20 Aug 2004 21:56:15 +0200, Armin Waibel <[EMAIL PROTECTED]>
wrote:
>I run some massive multithreaded tests against the 1.0_RELEASE branch in
>CVS (against hsql in-memory mode, single CPU) without failures (with
>tweaked OJB settings). In this test each thread work on separate
>objects, maybe the problems occur only when different threads work on
>the same objects.
>
>So could you post some of the exceptions you got when run your tests and
>some info about the test (concurrent threads, OJB configuration, ...)?
>
The test were run using a load test tool from Rational. Typically
20-50 transactions were triggered per minute. How many concurrent
threads this resulted in, I don't know, but I would guess something
like 5-10.
Below are some typical exceptions we got and our OJB.properties file:
com.ibm.websphere.ce.cm.StaleConnectionException: class
com.ibm.ejs.cm.proxy.ResultSetProxy is closed
at
com.ibm.ejs.cm.proxy.ResultSetProxy.getResultSet(ResultSetProxy.java(Inlined
Compiled Code))
at
com.ibm.ejs.cm.proxy.ResultSetProxy.wasNull(ResultSetProxy.java(Compiled
Code))
at
org.apache.ojb.broker.util.JdbcTypesHelper$T_BigInt.readValueFromResultSet(JdbcTypesHelper.java(Compiled
Code))
at
org.apache.ojb.broker.util.JdbcTypesHelper$BaseType.getObjectFromColumn(JdbcTypesHelper.java(Compiled
Code))
at
org.apache.ojb.broker.util.JdbcTypesHelper$BaseType.getObjectFromColumn(JdbcTypesHelper.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectArrayFrom(RowReaderDefaultImpl.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterator.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(BasePrefetcher.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker$PBPrefetchingListener.prefetch(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker$PBCollectionProxyListener.beforeLoading(QueryReferenceBroker.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.accesslayer.CollectionProxy.beforeLoading(CollectionProxy.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.CollectionProxy.loadData(CollectionProxy.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.ListProxy.loadData(ListProxy.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.CollectionProxy.getData(CollectionProxy.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.accesslayer.ListProxy.getListData(ListProxy.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.accesslayer.ListProxy.get(ListProxy.java(Compiled
Code))
at
de.lexcom.pl24.user.model.AccountImpl.hasUserType(AccountImpl.java(Compiled
Code))
...
java.util.NoSuchElementException: Could not obtain next object: Error
reading class type: de.lexcom.pl24.user.model.AccountUserTypeImpl from
result set: class com.ibm.ejs.cm.proxy.ResultSetProxy is closed
at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(BasePrefetcher.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker$PBPrefetchingListener.prefetch(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker$PBCollectionProxyListener.beforeLoading(QueryReferenceBroker.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.accesslayer.CollectionProxy.beforeLoading(CollectionProxy.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.CollectionProxy.loadData(CollectionProxy.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.ListProxy.loadData(ListProxy.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.CollectionProxy.getData(CollectionProxy.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.accesslayer.ListProxy.getListData(ListProxy.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.accesslayer.ListProxy.get(ListProxy.java(Compiled
Code))
at
de.lexcom.pl24.user.model.AccountImpl.hasUserType(AccountImpl.java(Compiled
Code))
...
2004-08-18 17:06:20,050 [Servlet.Engine.Transports : 878] ERROR
ojb.broker.accesslayer.JdbcAccessImpl - PersistenceBrokerException
during the execution of the query: Connection is closed
com.ibm.websphere.ce.cm.StaleConnectionException: Connection is closed
at
com.ibm.ejs.cm.proxy.ConnectionProxy.getConnection(ConnectionProxy.java(Inlined
Compiled Code))
at
com.ibm.ejs.cm.proxy.ConnectionProxy.translateException(ConnectionProxy.java(Inlined
Compiled Code))
at
com.ibm.ejs.cm.proxy.ConnectionProxy.prepareStatement(ConnectionProxy.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.StatementsForClassImpl.prepareStatement(StatementsForClassImpl.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.StatementsForClassImpl.prepareStatement(StatementsForClassImpl.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.accesslayer.StatementsForClassImpl.getPreparedStmt(StatementsForClassImpl.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStatement(StatementManager.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAccessImpl.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(RsQueryObject.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java(Compiled
Code))
at
org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(RsIteratorFactoryImpl.java(Compiled
Code))
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(PersistenceBrokerImpl.java(Compiled
Code))
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(PersistenceBrokerImpl.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(BasePrefetcher.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker$PBPrefetchingListener.prefetch(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.core.QueryReferenceBroker$PBMaterializationListener.beforeMaterialization(QueryReferenceBroker.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.IndirectionHandler.beforeMaterialization(IndirectionHandler.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(IndirectionHandler.java(Compiled
Code))
at
org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(IndirectionHandler.java(Inlined
Compiled Code))
at
org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandler.java(Compiled
Code))
at $Proxy4.getCountry(Unknown Source)
at
de.lexcom.pl24.user.model.ServiceImpl.isApplicableTo(ServiceImpl.java(Compiled
Code))
...
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0
at java.util.Vector.get(Vector.java(Compiled Code))
at
org.apache.ojb.broker.accesslayer.ListProxy.get(ListProxy.java(Compiled
Code))
at
de.lexcom.pl24.user.model.AccountImpl.hasUserType(AccountImpl.java(Compiled
Code))
at
de.lexcom.pl24.user.logic.UserSession.hasUserType(UserSession.java(Inlined
Compiled Code))
at
de.lexcom.pl24.user.web.login.LoginAction.execute(LoginAction.java(Compiled
Code))
at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java(Inlined
Compiled Code))
OJB.properties:
# OJB.properties -- configuration of the OJB runtime environment
# Version: 1.0
# (c) 2001, 2002, 2003 Apache Software Foundation
# Author: Thomas Mahler and many others
#
# These settings: $Id: OJB.properties,v 1.4 2003/12/16 10:28:06 grosse
Exp $
#
#----------------------------------------------------------------------------------------
# repository file settings
#----------------------------------------------------------------------------------------
repositoryFile=repository.xml
useSerializedRepository=false
serializedRepositoryPath=.
#----------------------------------------------------------------------------------------
# PersistenceBrokerFactory / PersistenceBroker
#----------------------------------------------------------------------------------------
PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl
PersistenceBrokerClass=org.apache.ojb.broker.core.PersistenceBrokerImpl
#----------------------------------------------------------------------------------------
# PersistenceBrokerFactory pool
#----------------------------------------------------------------------------------------
maxActive=100
maxIdle=-1
maxWait=2000
timeBetweenEvictionRunsMillis=-1
minEvictableIdleTimeMillis=1000000
whenExhaustedAction=0
#----------------------------------------------------------------------------------------
# ConnectionFactory / Default ConnectionPool
#----------------------------------------------------------------------------------------
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryNotPooledImpl
#----------------------------------------------------------------------------------------
# ConnectionManager
#----------------------------------------------------------------------------------------
# The ConnectionManagerClass entry defines the ConnectionManager
implemementation to be used
#
ConnectionManagerClass=org.apache.ojb.broker.accesslayer.ConnectionManagerImpl
ConnectionManagerClass=de.lexcom.common.ojb.OjbConnectionManager
# public class OjbConnectionManager extends ConnectionManagerImpl
implements ConnectionManagerIF
#{
# private static Log log =
LogFactory.getLog(OjbConnectionManager.class);
# private Connection con = null;
#
# public OjbConnectionManager(PersistenceBroker broker)
# {
# super(broker);
# }
#
# public Connection getConnection() throws LookupException
# {
# try
# {
# con = super.getConnection();
# }
# catch (LookupException e)
# {
# log.warn("getConnection() failed! Now
retrying...", e);
# // try again once
# con = super.getConnection();
# log.info("getConnection() retry succeeded");
# }
# return con;
# }
#
# public void releaseConnection()
# {
# try
# {
# if (getConnectionDescriptor().isDataSource()
# && con != null
# && !con.isClosed())
# {
# con.rollback();
# }
# }
# catch (SQLException e)
# {
# log.warn("Ignoring SQL exception during
connection release", e);
# }
# super.releaseConnection();
# }
#}
#----------------------------------------------------------------------------------------
# SqlGenerator
#----------------------------------------------------------------------------------------
SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl
#----------------------------------------------------------------------------------------
# CollectionProxy class
#----------------------------------------------------------------------------------------
CollectionProxyClass=
#----------------------------------------------------------------------------------------
# StatementManager
#----------------------------------------------------------------------------------------
StatementManagerClass=org.apache.ojb.broker.accesslayer.StatementManager
#----------------------------------------------------------------------------------------
# StatementsForClass
#----------------------------------------------------------------------------------------
StatementsForClassClass=org.apache.ojb.broker.accesslayer.StatementsForClassImpl
#----------------------------------------------------------------------------------------
# JdbcAccess
#----------------------------------------------------------------------------------------
JdbcAccessClass=org.apache.ojb.broker.accesslayer.JdbcAccessImpl
#----------------------------------------------------------------------------------------
# Object cache
#----------------------------------------------------------------------------------------
ObjectCacheClass=de.lexcom.common.ojb.ObjectCacheThreeLevelImpl
#----------------------------------------------------------------------------------------
# Locking
#----------------------------------------------------------------------------------------
LockManagerClass=org.apache.ojb.odmg.locking.LockManagerDefaultImpl
LockMapClass=org.apache.ojb.odmg.locking.InMemoryLockMapImpl
LockTimeout=600000
ImplicitLocking=false
LockAssociations=WRITE
#----------------------------------------------------------------------------------------
# OQL / SQL settings
#----------------------------------------------------------------------------------------
OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl
SqlInLimit=200
#----------------------------------------------------------------------------------------
# Meta data / mapping settings
#----------------------------------------------------------------------------------------
PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldIntrospectorImpl
#----------------------------------------------------------------------------------------
# Transaction Management and assocation
#----------------------------------------------------------------------------------------
OJBTxManagerClass=org.apache.ojb.odmg.LocalTxManager
#----------------------------------------------------------------------------------------
# End of OJB.properties file
#----------------------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]