Hi,

> You wrote: "I think the persistence API should be synchronous as it is
> now." Which I understand as the persistence layer returning a save()
> call only when the entire cluster has been "written to".

It seems I was unclear. This is exactly what I *don't* want for
Jackrabbit 3. In the current Jackrabbit implementation, the
storage.save() call indeed returns only when the change is available
on all cluster nodes. And that is exactly what doesn't scale. What I
want for Jackrabbit 3 is: the storage.save() call on a cluster node
returns as soon as the data was written on *this* cluster node
(locally). But not on *other* cluster nodes. As I already wrote,
"cluster nodes should merge each others changes asynchronously".

> the observation listeners will be called out of order

Not necessarily. The spec doesn't say when observation listeners are
called (I don't talk about synchronous observation listeners here,
because they are not part of the spec). Regular observation listeners
might be called 1 second or 1 minute after the event. Now if
Jackrabbit 3 would guarantee to asynchronously merge changes within 2
seconds, and delay delivering local events, then Jackrabbit 3 could
deliver the events in the right order.

> with clustering you tend to ignore external events in observation listeners 
> anyway

Yes, many application ignore such events. However Jackrabbit must
still deliver them.

Regards,
Thomas

Reply via email to