Hi Team,

While running Oak in Sling we rely on Sling Scheduler [1] to execute
the periodic jobs. By default Sling Scheduler uses a pool of 5 threads
to run all such periodic jobs in the system. Recently we saw an issue
OAK-4563 where due to some reason the pool got exhausted for long time
and that prevented the async indexing job to run for long time and
hence affected the query result.

To address that Sling now provides a new option (SLING-5831) where one
can specify the pool name to be used to execute a specific job. So we
can specify custom pool which can be used for Oak related jobs.

Now currently in Oak we use following types of periodic jobs

1. Async indexing - (Cluster Singleton)
2. Document Store - Journal GC (Cluster Singleton)
3. Document Store - LastRevRecovery
4. Statistic Collection - For timeseries data update in ChangeProcessor,
    SegmentNodeStore GCMonitor

Now should we use

A - one single pool for all of the above
B - use the pool only for 1-3. The default pool would be of 5. So even
if #2 #3 are running
      it would not hamper #1

Assuming #4 is not that critical to run and may consist of lots of jobs.

My suggestion would be to go for #B

Chetan Mehrotra
[1] 
https://sling.apache.org/documentation/bundles/scheduler-service-commons-scheduler.html

Reply via email to