I believe that for long transactions to work that the cache must have a version of the 
object to compare against (for timestamp checking and to generate the dirty checking 
update). That means that if the server process is restarted that the long transaction 
will fail. Also, if the object is dropped out of the cache (if you are using count or 
time limited cache algorithms) the same thing will probably happen.

Am I wrong?

Conor

-----Original Message-----
From: REMICOURT Beno�t [mailto:[EMAIL PROTECTED]] 
Sent: 21 January 2003 10:49
To: [EMAIL PROTECTED]
Subject: [castor-dev] Need Quick Help -- Timestamp mismatched
Importance: High

Hi everyone,

I encounter a big and very blocking error on my application using Castor
0.9.3.21.
I have already deploy the same application for different clients before with
no problems till now.

The config is that time:
 - Linux Red Hat
 - Postgres 7.1
 - Tomcat 3.3.1
 - Castor 0.9.3.21
 - My App
 - Specific project classes linked with my app

My problem is, I am the developper of the core of the project (My App), a
Web Content Management Tool to build Dynamic WebSites with lots of editorial
contents.
Contents are created/edited/updated/deleted with back office interface and
viewed with front office (= website).

I am using long transactions.

Problem is in back office when I tried to udpdate a content, a "Timestamp
mismatched" error occured.
I try to find out what is the problem because for this project I was not the
"specific classes" developper.
After reviewing all the code of the developper, it seems to be correct and
conform with my app.

I, so, try to debug and find where the problem appears:

In "org.exolab.castor.persist.ClassMolder.update(TransactionContext, OID,
DepositBox, Object, AccessMode)" castor try that:

-> fields = (Object[]) locker.getObject( tx );
->
->        if ( !isDependent() && !_timeStampable )
->            throw new IllegalArgumentException("A master object that
involves in a long transaction must be a TimeStampable!");
->
->              long lockTimestamp = locker.getTimeStamp();
->        long objectTimestamp = _timeStampable?
((TimeStampable)object).jdoGetTimeStamp(): 1;
->
->        if ( objectTimestamp > 0 && oid.getIdentity() != null ) {
->              ...

And in fact, locker.getObject( tx) returns NULL ! No object in cache !
So locker's timestamp is 0 and object timestamp is different => Timestamp
exception !

The problem is, ok the cache is empty for this object but how can I refresh
the whole cache ?
Or how to make castor to not check the cache and force update my object ?

If anyone have a solution to this problem, please help.
I have to solve this before the end of the week, so if anyone can help me,
thanks in advance.

Sincerely, thanks all for your job with Castor,

REMICOURT Beno�t


Tout usage de ce message par une personne autre que son destinataire est
strictement interdit. L'int�grit� de ce message n'�tant pas assur�e sur
Internet, Le Groupe EUROGICIEL ne peut �tre tenu responsable de son contenu.
Toute utilisation ou diffusion non autoris�e est interdite. Si vous n'�tes
pas destinataire de ce message, merci de le d�truire et d'avertir
l'exp�diteur. 

The information above is for the sole use of the individual or entity to
which it is intended. If you are not the intended recipient of this message,
you are hereby notified that any dissemination, distribution or copying of
this document is strictly prohibited. The integrity of this message cannot
be guaranteed on the Internet. EUROGICIEL Group shall in no way be liable
for its content. Please destroy this message and notify the sender. 

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev



--

This e-mail is confidential and is intended for the named recipient only. If
you receive it in error please destroy the message and all copies. Kainos
Software Ltd. does not accept liability for damage sustained as a result of
malicious software (e.g. viruses). Kainos does not accept liability for, or
permit, the creation of contracts on its behalf by e-mail, the publication of
any defamatory statement by its employees by e-mail, or changes subsequently
made to the original message. The Company's registered office is located at
4-6 Upper Crescent, Belfast, BT7 1NT, Northern Ireland, Tel +44 28 9057 1100.

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to