[
https://issues.apache.org/jira/browse/SLING-4751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14567318#comment-14567318
]
Carsten Ziegeler commented on SLING-4751:
-----------------------------------------
I think hitting the queue limit is the only case.
Ok, let's see first why local vs external is interesting/important: it allows
to distribute the processing of these events in an easy way. You want to make
sure that at least one instance gets the events and that its clear which
instance should act on the events.
For this, local is a pretty good marker - however if there are case, no matter
how rarely these might happen, where this is not guaranteed to work, it means
no listener will pick up changes as they are marked as external on all
instances.
Now, the other typical use case for observation is to clear caches. In this
case you need to report all changes on all instances in order to flush a cache.
For example script compilation is a pretty good use case
> New Observation Support
> -----------------------
>
> Key: SLING-4751
> URL: https://issues.apache.org/jira/browse/SLING-4751
> Project: Sling
> Issue Type: Improvement
> Components: API, JCR, ResourceResolver
> Reporter: Carsten Ziegeler
> Assignee: Carsten Ziegeler
> Fix For: API 2.10.0, Resource Resolver 1.2.6
>
>
> Mail thread:
> http://mail-archives.apache.org/mod_mbox/sling-dev/201505.mbox/%3C555983F2.20402%40apache.org%3E
> Starting mail
> Right now, resources changes are propagated through event admin - which
> at the time sounded like a good idea. Over time, this has shown to be a
> bottle neck.
> Basically there are at least three problems:
> - the sender of the resource events does not know whether there is a
> receiver, therefore events for each and every change need to be sent
> - event objects are immutable and therefore all relevant data needs to
> be calculated upfront, even if it's not used. For example a resource
> event contains the resource type which needs to be fetched from the
> repository, even if no one is interested in it.
> - receivers of the events can't easily act on behalf of the user who
> initiated the change.
> I created a new listener api at [1] which defines a ResourceListener
> interface and some ways how to specify the events one is interested in.
> The user aware resource listener allows to act on behalf of the user (if
> that information is available).
> On the other side, a new service, the ObservationReporter [2] is
> defined. Resource providers report changes through this interface. The
> payload of such an event is an interface which allows for lazy retrieval
> of the information.
> We can also use this mechanism for compatibility and an implementation
> of the observation reporter might sent all events via the event admin.
> [1]
> https://svn.apache.org/repos/asf/sling/whiteboard/cziegeler/api-v3/src/main/java/org/apache/sling/api/resource/observation/
> [2]
> https://svn.apache.org/repos/asf/sling/whiteboard/cziegeler
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)