jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Frédéric Esnault <f...@legisway.com>
Subject RE: XASession and hasPendingChanges
Date Fri, 01 Jun 2007 14:44:32 GMT
Okay, I agree.
But this does not solve my problem. It seems (or I didn't find it) that there is no way to
check tx status on a XASessionImpl. It would help, to wait for the end of a transaction, for
example. And if hasPendingChanges stays "limited" to the session save() operation, it does
not help for tx...

Frédéric Esnault 

-----Message d'origine-----
De : dominique.pfister@gmail.com [mailto:dominique.pfister@gmail.com] De la part de Dominique
Envoyé : vendredi 1 juin 2007 16:42
À : users@jackrabbit.apache.org
Objet : Re: XASession and hasPendingChanges

Well, the merge of two nodes will be part of the transaction, too. At
the end of the transaction, all operations inside that transaction -
whether or not related to versioning - will either be committed as an
entity or rolled back.

Kind regards

On 6/1/07, Frédéric Esnault <fesn@legisway.com> wrote:
> I agree on this, hasPendingChanges returning true in case of saved but uncommitted
> tx would create some difficulties, especially in a case like the one you submitted.
> But...wouldn't it be dangerous to allow a merge of two nodes if one of them
> is potentially modified by an uncommitted transaction? The merge can
> succeed before tx commit, and fail after commit, which is a situation
> hasPendingChanges not taking care of tx would allow. Am I wrong?
> Frédéric Esnault - Ingénieur R&D
> Legisway
> 60 boulevard de la mission Marchand
> 92400 Courbevoie La Défense
> -----Message d'origine-----
> De: dominique.pfister@gmail.com [mailto:dominique.pfister@gmail.com] De la part de Dominique
> Envoyé: vendredi 1 juin 2007 15:17
> À: users@jackrabbit.apache.org
> Objet: Re: XASession and hasPendingChanges
> Hi Frédéric,
> according to the specification, hasPendingChanges should return true
> if the session has unsaved changes. Some operations (e.g.
> javax.jcr.Node.merge(String, boolean)) rely on a session not having
> any pending changes. Some client could perfectly use code such as
> node.addNode("child");
> node.getSession().save();
> node.merge("sourcews", true);
> If an XASessionImpl has saved but uncommitted changes - this is
> probably the case you're referring to, isn't it? - it could decide to
> return true in its hasPendingChanges implementation. However, the same
> client, unaware of the transactional nature of its session, would
> never be able to execute the same piece of code shown above, because
> the session would still report pending changes. In other words, a
> client would have to detect whether or not it runs in a transactional
> environment, which is probably not what you want.
> Kind regards
> Dominique
> On 6/1/07, Frédéric Esnault <fesn@legisway.com> wrote:
> > I have a question about the transactional version of the SessionImpl object.
> >
> > It inherits the hasPendingChanges from the SessionImpl class, but my question is
> >
> >
> >
> > Shouldn't the  hasPendingChanges from XASessionImpl take into consideration the
tx status?
> >
> > Or am I missing something?
> >
> >
> >
> > Frederic Esnault
> >
> >

View raw message