jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tobias Bocanegra" <tobias.bocane...@day.com>
Subject Re: Observation within a Cluster
Date Wed, 07 Mar 2007 19:38:05 GMT
hi,
from the view of the repository, the JCR observation works as
specified. it does not matter if the change was done on the 'local'
cluster node or an 'external' cluster node. an event listener that is
registered properly will be notified.

imo, managing an event queue is the task of the application. of course
this could be a pre factored utility that comes with jackrabbit (but
not as part of the core repository). the queue could consist of a
queue-node where events are added as children. the queue manager
listens on changes on that node and locks it before it removes the
event-node. the locking prevents other cluster instances from handling
the same event as well. if, on the other hand, you need a
deliver-to-all, the event node is not removed, but maybe flagged as
processed by the cluster instance. if you know the number of cluster
instances, you may also remove the node after it is processed by all
instances.

regards, toby

On 3/7/07, Noah Vihinen <nvihinen@maven.net> wrote:
> We can leverage "isExternal()" in the short-term.  Are there any
> plans in place to implement the "deliver-exactly-once"
> functionality?  Most use-cases I can think of for JCR observation
> (other than JCR implementation internals such as cluster node cache
> synchronization) would work more efficiently with the "deliver-
> exactly-once" functionality.
>
> Thanks,
> Noah
>
> On Mar 7, 2007, at 1:46 AM, Dominique Pfister wrote:
>
> > Hi again,
> >
> > Sorry, I made a mistake: of course, isExternal() returns "true" for
> > all but one cluster node, namely the active one.
> >
> > Kind regards
> > Dominique
> >
> > On 3/7/07, Dominique Pfister <dominique.pfister@day.com> wrote:
> >> Hi Noah,
> >>
> >> Jackrabbit's implementation of javax.jcr.observation.Event, namely
> >>
> >>   org.apache.jackrabbit.core.observation.EventImpl
> >>
> >> has a public method called "isExternal()" that will return "true" if
> >> your EventListener is registered in the "active" cluster node, i.e.
> >> the one making the change, and "false" for all the passive ones. May
> >> be that helps?
> >>
> >> Apart from that, it is currently not possible to register a
> >> "deliver-exactly-once" EventListener in a cluster.
> >>
> >> Kind regards
> >> Dominique
> >>
> >> On 3/6/07, Noah Vihinen <nvihinen@maven.net> wrote:
> >> > Suppose I would like to construct an EventListener that makes some
> >> > persistent change to the repository as a result of some type of
> >> node
> >> > being added.  For example, the event listener may create a new node
> >> > of a different type, or set some properties.  How do I ensure that
> >> > only one JCR server within the cluster processes the NODE_ADDED
> >> > event, so the resultant persistent change only happens once?
> >> >
> >> > Is the only solution to add logic to my event listener to determine
> >> > whether or not it should proceed with the persistent change?
> >> > Further, if this is the case, are there any plans to make event
> >> > handling more efficient in the future, so only one node in the
> >> > cluster will receive notification of a particular event?
> >> >
> >> > Thanks,
> >> > Noah
> >> >
> >>
>
>


-- 
-----------------------------------------< tobias.bocanegra@day.com >---
Tobias Bocanegra, Day Management AG, Barfuesserplatz 6, CH - 4001 Basel
T +41 61 226 98 98, F +41 61 226 98 97
-----------------------------------------------< http://www.day.com >---

Mime
View raw message