Details
-
Task
-
Resolution: Done
-
Blocker
-
3.0.0.Alpha1
-
None
Description
JCR Observation hasn't yet been ported to the '3.x' branch. The basic design and implementation will be pretty similar to how it worked in '2.x', except that the low-level evens are changed pretty dramatically in '3.x'. Also, it'd be useful to have a queue and worker pool to push events out to the registered observers.
Here's the basic outline for the observation implementation:
- implement the JCR ObservationManager interface and manage the registered listeners (much as in 2.x)
- implement a o.m.j.cache.change.ChangeSetListener that receives the cache-level ChangeSet instances, submits each ChangeSet object into a queue, and call RepositoryStatistic.increment(ValueMetric.EVENT_QUEUE_SIZE)
- have the queue worker(s) pull ChangeSet instances from the queue, call RepositoryStatistic.decrement(ValueMetric.EVENT_QUEUE_SIZE), convert to the appropriate JCR event objects, and then notify each registered listener
- change JcrRepository to instantiate the JcrObsevationManager and to register the ChangeSetListener implementation with the RepositoryCache (similarly to how the LockManager is registered as a listener)
Attachments
Issue Links
- is blocked by
-
MODE-1411 Dispatching events for the system workspace from a separate thread, corrupts the node caches
- Closed
-
MODE-1407 Locking nodes does not add mandatory properties
- Closed
-
MODE-1408 Namespace changes do not trigger repository events
- Closed
-
MODE-1409 Node.orderBefore does not trigger (or triggers incomplete) cache events
- Closed
-
MODE-1410 Workspace.move does not trigger cache events
- Closed