Ralf,
I figured it out. Things did work fine but I had an object outside the
ttl time of 60 seconds and I got timestamp exception. I just changed my
configuration to
<cache-type type="count-limited" capacity="200"/>. I now remove objects
from the cache when I do not need them.
Once the object is gone from the cache, I take it there is no way to do a
long transaction update.
Steve
----- Original Message -----
From: "Ralf Joachim" <[EMAIL PROTECTED]>
To: <dev@castor.codehaus.org>
Sent: Wednesday, October 01, 2008 10:15 AM
Subject: Re: [castor-dev] ObjectModifiedException error
Sorry, I do not understand. Can you please explain what you want to
know. According to the last mail I thought things work now.
Ralf
Stephen Ince schrieb:
In order to do a long transcation the object has to be in the cache.
Is there anything I can do? In my case I am updating the object 60
seconds later.
Steve
----- Original Message ----- From: "Ralf Joachim"
<[EMAIL PROTECTED]>
To: <dev@castor.codehaus.org>
Sent: Tuesday, September 30, 2008 5:40 PM
Subject: Re: [castor-dev] ObjectModifiedException error
Hi Stephen,
there should be no need to reload the cached entities.
Regards
Ralf
Stephen Ince schrieb:
Ralf,
Thx for your reply and help. I got it to work by using 60 ttl.
<cache-type type="time-limited" capacity="60"/>.
db.begin();
db.load(UserScenario.class,u.getUserScenarioId(),AccessMode.ReadOnly);
System.err.println("updating("+u+")=" + u.jdoGetTimeStamp());
db.update(u);
db.commit();
Is it necessary for me to reload the object in the cache?
db.begin();
System.err.println("updating("+u+")=" + u.jdoGetTimeStamp());
db.update(u);
db.commit();
Steve
----- Original Message ----- From: "Ralf Joachim"
<[EMAIL PROTECTED]>
To: <dev@castor.codehaus.org>
Sent: Tuesday, September 30, 2008 12:32 PM
Subject: Re: [castor-dev] ObjectModifiedException error
Hi Stephen,
till 1.3 release of Castor there are 2 requirements for entities that
are used at long transactions.
- the entity have to implement the TimeStampable interface
- the entity has to stay in cache from being loaded until update is
called with it
According to your test scenarios the second seams not to be the case
(case 2).
Backgroud of the ObjectModifiedException in cases 1 and 3 is, that an
entity always gets a new timestamp value when it is loaded from
database. As the entity you explicitly loaded into cache in cases 1
and
3 got a different timestamp the ObjectModifiedException gets thrown at
update.
To prevent this you have to use cache type 'unlimited' or
'time-limited'
with a ttl that is bigger than the time between you initial load
and the
call to update. Having said that this also does not help if the entity
is part of an extends hierarchy. There is a open issue (castor-1217)
about that.
If keeping entities in cache for such a long time is not an option to
you, maybe according to the number of entities involved, or the entity
is part of an extends hierarchy, there are only 2 options.
- copy changed properties of the entity by hand into an entity
loaded in
the transaction
- switch to the upcoming 1.3 release which allows to persist the
timestamp in database
If you like to know more about persisting timestamp let me know and
I'll
point you into the right direction. To reduced turnaround you may
want
to connect to castor channel at: http://irc.codehaus.org/
Regards
Ralf
Stephen Ince schrieb:
I am getting a "org.exolab.castor.jdo.ObjectModifiedException:
Timestamp mismatched!" error when saving a long transactions. How can
I avoid this. I have tried the following.
case 1:
db.begin();
db.load(UserScenario.class,u.getUserScenarioId(),AccessMode.ReadOnly));
db.update(u);
db.commit();
case 2:
db.begin();
db.update(u);
db.commit();
I get object not in cache error for this case.
case 3:
db.begin();
db.load(UserScenario.class,u.getUserScenarioId(),AccessMode.ReadOnly));
db.commit();
db.begin();
db.update(u);
db.commit();
Steve
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
--
Syscon Ingenieurbüro für Meß- und Datentechnik GmbH
Ralf Joachim
Raiffeisenstraße 11
72127 Kusterdingen
Germany
Tel. +49 7071 3690 52
Mobil: +49 173 9630135
Fax +49 7071 3690 98
Internet: www.syscon.eu
E-Mail: [EMAIL PROTECTED]
Sitz der Gesellschaft: D-72127 Kusterdingen
Registereintrag: Amtsgericht Stuttgart, HRB 382295
Geschäftsleitung: Jens Joachim, Ralf Joachim
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
--
Syscon Ingenieurbüro für Meß- und Datentechnik GmbH
Ralf Joachim
Raiffeisenstraße 11
72127 Kusterdingen
Germany
Tel. +49 7071 3690 52
Mobil: +49 173 9630135
Fax +49 7071 3690 98
Internet: www.syscon.eu
E-Mail: [EMAIL PROTECTED]
Sitz der Gesellschaft: D-72127 Kusterdingen
Registereintrag: Amtsgericht Stuttgart, HRB 382295
Geschäftsleitung: Jens Joachim, Ralf Joachim
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email