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: <[email protected]>
> 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: <[email protected]>
>>> 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


Reply via email to