... forgot to mention I use poolman for connection pooling between my system and the mysql db.
Jens Saade wrote:
Hi all,
I am currently experiencing weird problems with castor jdo.
I am using mysql 4.0.16 on debian linux, jdk 1.4.1_02 (1.4.2._x versions somehow crash with sig 11), aswell as castor 0.9.5.2 / 0.9.5
While running perfectly under windoze exactly the same code throws exception (win: jdk 1.4.1_04, mysql Ver 12.21 Distrib 4.0.14, for Win95/Win98 (i32))
The stacktrace: ---------------------------------
org.exolab.castor.jdo.TransactionNotInProgressException: This transaction is not open
at org.exolab.castor.jdo.engine.DatabaseImpl.rollback(DatabaseImpl.java:551)
at de.fusionsoft.pce.core.engine.ItemManager.getAllItems(ItemManager.java:267)
at de.fusionsoft.pce.core.engine.PceServiceImpl.getAllItems(PceServiceImpl.java:239)
at de.fusionsoft.pce.core.engine._PceServiceImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:355)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:255)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
2004-03-10 20:09:34,667 ERROR [pce.core.engine.ItemManager] : Could not execute statement 'selectAllItemsOql' :
org.exolab.castor.jdo.ObjectModifiedException: Transaction aborted: Object of type de.fusionsoft.pce.core.items.types.News with identity 1 has been modified by a concurrent transaction (cache entry is different from database row)
at org.exolab.castor.jdo.engine.SQLEngine.store(SQLEngine.java:883)
at org.exolab.castor.persist.ClassMolder.store(ClassMolder.java:1616)
at org.exolab.castor.persist.LockEngine.store(LockEngine.java:758)
at org.exolab.castor.persist.TransactionContext.prepare(TransactionContext.java:1540)
at org.exolab.castor.jdo.engine.DatabaseImpl.commit(DatabaseImpl.java:528)
at de.fusionsoft.pce.core.engine.ItemManager.getAllItems(ItemManager.java:264)
at de.fusionsoft.pce.core.engine.PceServiceImpl.getAllItems(PceServiceImpl.java:239)
at de.fusionsoft.pce.core.engine._PceServiceImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:355)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:255)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
I am also experiencing a new error when i try to insert a new item - this is prolly a dependency error ...
org.exolab.castor.jdo.LockNotGrantedException: persist.readLockTimeoutde.fusionsoft.pce.core.items.types.News/2/105 by [EMAIL PROTECTED]
at org.exolab.castor.persist.ObjectLock.acquireLoadLock(ObjectLock.java:428)
at org.exolab.castor.persist.LockEngine$TypeInfo.acquire(LockEngine.java:1201)
at org.exolab.castor.persist.LockEngine$TypeInfo.access$300(LockEngine.java:1026)
at org.exolab.castor.persist.LockEngine.load(LockEngine.java:355)
at org.exolab.castor.persist.TransactionContext.load(TransactionContext.java:649)
at org.exolab.castor.persist.QueryResults.fetch(QueryResults.java:229)
at org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQueryImpl.java:641)
at org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQueryImpl.java:624)
at de.fusionsoft.pce.core.engine.ItemManager.filterItemsByRight(ItemManager.java:304)
at de.fusionsoft.pce.core.engine.ItemManager.getAllItems(ItemManager.java:262)
at de.fusionsoft.pce.core.engine.PceServiceImpl.getAllItems(PceServiceImpl.java:239)
at de.fusionsoft.pce.core.engine._PceServiceImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:355)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:255)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
----------sourcecode ------
public Item[] getAllItems(String sessionId, int reqItemTypeId, String reqSortby, boolean reqAscending, int reqMaxLimit) throws ItemException, SecurityException {
UserRegistry userReg = UserRegistry.getInstance(jdo);
long tokenId = userReg.getUserIdForSession(sessionId);
if (tokenId == 0) {
logger.error("tokenId could not be resolved from UserRegistry for sessionId " + sessionId);
return null;
}
logger.debug("getAllItems() called: sessionId=" + sessionId + " reqItemTypeId=" + reqItemTypeId + " reqSortby=" + reqSortby + " reqAscending=" + reqAscending + " reqMaxLimit=" + reqMaxLimit);
Item[] items = null;
Item tmpItem = null;
OQLQuery selectAllItemsOql = null;
QueryResults results = null;
ItemType reqItemType;
String reqItemTypeName;
try {
reqItemType = itemTypes[reqItemTypeId];
} catch (IndexOutOfBoundsException e) {
throw new ItemException("Invalid ItemType provided: " + reqItemTypeId + " does not exist. " + e);
}
// only proceed if we got a valid itemType reference if (reqItemType != null) { Database db = null; try { db = jdo.getDatabase(); db.begin();
// prepare statement properties reqItemTypeName = reqItemType.getTypeName();
if (reqSortby == null || reqSortby.equals("")) reqSortby = SORTFIELD_DEFAULT;
String reqOrder; if (reqAscending) reqOrder = "ASC"; else reqOrder = "DESC";
if (reqMaxLimit == 0)
reqMaxLimit = LIMIT_DEFAULT;
logger.debug("Selecting de.fusionsoft.pce.core.items.types." + reqItemTypeName);
selectAllItemsOql = db.getOQLQuery("SELECT p FROM de.fusionsoft.pce.core.items.types." + reqItemTypeName + " p ORDER BY " + reqSortby + " " + reqOrder + " LIMIT $1");
selectAllItemsOql.bind(reqMaxLimit);
results = selectAllItemsOql.execute(true);
items = filterItemsByRight(reqItemTypeId, tokenId, results);
results.close();
db.commit();
} catch (PersistenceException e) {
try {
db.rollback();
} catch (TransactionNotInProgressException e1) {
e1.printStackTrace();
}
logger.error("Could not execute statement 'selectAllItemsOql' :", e);
} finally {
try {
if (!db.isClosed())
db.close();
} catch (PersistenceException e) {
logger.error("Could not close DB connection while executing statement 'selectAllItemsOql' :", e);
throw new ItemException(e.getMessage());
}
}
} else {
throw new ItemException("Invalid ItemType provided: " + reqItemTypeId + " is not applicable.");
} return items; } ----------------
Note that I do not change result objects in any way.
Anyone knows what to do?
Cheers, Jens
----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev
--
PIRONET NDH AG
Jens Saade - Application Developer - Business Center Industry
Maarweg 149-161, 50825 Cologne - Germany
Phone: +49 (0)221-770-1794 - Fax: +49 (0)221-770 1005
Mail to: [EMAIL PROTECTED] - http://www.pironet-ndh.com
----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev