Hi Mehrotra, Thank you for the reply. It is very helpful for me. I didn't know Sling Scheduler Service writes documents to an index by a single thread. I saw the discussion that you proposed about NRT searching in Oak a few weeks ago. NRT search requires an IndexWriter which has uncommitted documents in-memory. If users do a NRT searching, do you intend to get the writer from that singleton writer service? Or to get from a writer on each node in a cluster? (I don't know how to get the writer from another process.) Do you assume Oak can do that by OSGi/Sling implementation? I'm interested in Oak from 1 year ago but didn't take Sling into account until today. If my questions are incorrect, I'm sorry for that.
Regards, Shinichiro Abe > 2015/08/04 22:47、Chetan Mehrotra <chetan.mehro...@gmail.com> のメール: > > Lucene indexing in Oak is done via a single thread in a cluster. The > AsyncIndex job which is responsible for performing the Lucene indexing > is scheduled to run as a singleton in the cluster [1]. For this Oak > depends on the embedding application. For e.g. when running in Apache > Sling the Job is registered with following properties > > * scheduler.period=5 > * scheduler.runOn=SINGLE > > And Sling scheduler component then ensures that this job (i.e. > indexing) is only performed on a one node in a cluster. Oak internally > also ensures that at a time only one index is running via some state > management in :async hidden node. So essentially by design we enforce > that no concurrent indexing should happen and hence the use of > NoLockFactory > Chetan Mehrotra > > > On Tue, Aug 4, 2015 at 5:40 PM, Shinichiro Abe > <shinichiro.ab...@gmail.com> wrote: >> Hello, >> >> If I understand correctly, by OakDirectory, a Lucene index is placed as Blob >> on a Storage. >> If there is an Oak cluster condition, Oak instances on the cluster will have >> a LuceneIndexEditor individually in which IndexWriter is working. >> In this case when multiple IndexWriters update documents against one >> OakDirectory on the same timing, >> I think it will lead to an index corruption even though OakDirectory >> controls a lock with NoLockFactory. >> How are you avoiding this? Oak has a OakDirectory per cluster id? Oak impl >> locks other writer behaviors during one update? >> I'd like to oak-lucene design. Where the code should I see? >> Background: I'd like to get a hint from Oak team for CONNECTORS-1219 where >> I'm working on, >> I have cluster(multiprocess) condition problem. Currently I hit index >> corruption when multiple IndexWriters write to an index. >> >> Thanks in advance. >> Shinichiro Abe