Hi, Oak currently executes various task in background like Async Index Update, Blob store garbage collection etc. While running multiple instances of Oak in a cluster it would be desirable to run some job only on one node in a cluster particularly Async Index Update.
Currently we schedule these jobs through WhiteboardUtils [1] . The default implementation schedules it using an executor. However when we run it in Sling based system the scheduling is handled via Sling Commons Scheduler. Sometime back it added support for running the task on only one node in a cluster [2]. This can be done by just adding an extra property with the service registration. Would it make sense to make use of this feature to run the Async Index Update only on one node?. It would also help in avoiding the conflict while concurrently updating the index related data in cluster. For non Sling based system we would let the owning system provide this support by providing right implementation of the WhiteBoard Chetan Mehrotra [1] https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java#L31 [2] https://issues.apache.org/jira/browse/SLING-2979