... 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




Reply via email to