Hi,
I've noticed that in DODS 5.1 and 6.x (in opposition to previous
versions) every DO generated has a new method associated to it where the
"references" parameter is always being set to true by methods
save(DBTransaction dbt) and save():
public void save(DBTransaction dbt, boolean references)
For what I understood after sniffing the DODS generated code, when this
parameter is set to true all the referenced DO's are being loaded (?)
and updated in DB. Is this the real goal for this parameter? Why is it
always set to true? Could this be related with the error I've described
in the email bellow?
Thanks in advance,
Ricardo
Ricardo Tedim wrote:
Hi,
I'm using DODS 5.1 and I'm facing a problem with conflicting SQL
update statements (from different JVMs) to the same DB entry. I have
an object Entry that has a integrity reference to object User (both of
them aggregate their own DOs). If I try to update the same user from
different JVMs I get in one of them a version confict (as expected):
[...]
Caused by: java.sql.SQLException: Update failed, but Table userinfo
id=1000023 does exist with version=5353
at
com.lutris.appserver.server.sql.CoreDO.seeWhatHappened(Unknown Source)
at com.lutris.appserver.server.sql.CoreDO.executeUpdate(Unknown
Source)
at
com.lutris.dods.builder.generator.dataobject.GenericDO.executeUpdate(Unknown
Source)
at com.lutris.appserver.server.sql.CoreDO.executeInsert(Unknown
Source)
at
com.lutris.dods.builder.generator.dataobject.GenericDO.executeInsert(Unknown
Source)
at
com.mobicomp.mobilekeeper.data.db.user.UserDO.executeInsert(UserDO.java:2585)
at
com.lutris.appserver.server.sql.standard.StandardDBTransaction.write(Unknown
Source)
at
com.lutris.appserver.server.sql.standard.StandardDBTransaction.commit(Unknown
Source)
at com.mobicomp.Entry.save(Entry.java:131)
... 20 more
However in the JVM where the version conflict occured, if I try to
perform any update to the User instance loaded in memory (loaded
before the version conflict occured), I always get the following
exception (in this example I try to save Entry which has a integrity
reference to User):
[...]
Caused by: java.lang.NullPointerException
at com.mobicomp.UserDO.getUpdateStatement(UserDO.java:6023)
at com.lutris.appserver.server.sql.CoreDO.executeUpdate(Unknown
Source)
at
com.lutris.dods.builder.generator.dataobject.GenericDO.executeUpdate(Unknown
Source)
at com.lutris.appserver.server.sql.CoreDO.executeInsert(Unknown
Source)
at
com.lutris.dods.builder.generator.dataobject.GenericDO.executeInsert(Unknown
Source)
at
com.mobicomp.mobilekeeper.data.db.user.UserDO.executeInsert(UserDO.java:2585)
at
com.lutris.appserver.server.sql.standard.StandardDBTransaction.write(Unknown
Source)
at
com.lutris.appserver.server.sql.standard.StandardDBTransaction.commit(Unknown
Source)
at com.mobicomp.Entry.save(Entry.java:131)
... 20 more
I was expecting an error in this situation but not a
NullPointerException. It seems like the object has become corrupted
with the version conflict. Is this some known issue from DODS 5.1?
Thanks in advance,
Ricardo
--
You receive this message as a subscriber of the enhydra@xxxxxxxxxxxxx mailing
list.
To unsubscribe:
mailto:enhydra-unsubscribe@xxxxxxxxxxxxx
For general help:
mailto:sympa@xxxxxxxxxxxxx?subject=help
ObjectWeb mailing lists service home page:
http://www.objectweb.org/wws
|