You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Vikas Saurabh (JIRA)" <ji...@apache.org> on 2016/12/05 06:29:58 UTC

[jira] [Commented] (OAK-5212) Avoid updating the index nodestate if no change is done in index

    [ https://issues.apache.org/jira/browse/OAK-5212?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15721380#comment-15721380 ] 

Vikas Saurabh commented on OAK-5212:
------------------------------------

Overall it looks good to me. I've a certain doubts though (most probably due to my own lack of knowledge):
* {{DirectoryReader#listCommits}} says ".. Note that if a commit is in progress while this method is running, that commit may or may not be returned.". Could that mean that the check in {{DefaultIndexWriter#close -> indexUpdated = genAtEnd != genAtStart;}} might say "not updated" incorrectly at times?
* {{OakDirectory#dirty}} - although, I can see that current usage is single threaded; but it seems to me that such states should have synchronized access (with single thread access, synchronization won't cost must as well).

> Avoid updating the index nodestate if no change is done in index
> ----------------------------------------------------------------
>
>                 Key: OAK-5212
>                 URL: https://issues.apache.org/jira/browse/OAK-5212
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: lucene
>            Reporter: Chetan Mehrotra
>            Assignee: Chetan Mehrotra
>            Priority: Minor
>              Labels: performance
>             Fix For: 1.6
>
>         Attachments: OAK-5212-v1.patch
>
>
> As noted in OAK-5211 directory listing was getting modified (due to reorder) even if no change happens in index. 
> Another place where we update state post index close is at ":status" node where we store {{lastUpdated}} and {{indexedNodes}} post index close. In normal cases LuceneIndexEditor avoids initializing the IndexWriter if there is no change. However it can happen that when any node gets deleted the editor performs a delete operation. It can happen that tree being deleted is not indexed but still editor would do this as it cannot determine that easily. And in doing that IndexWriter would be initialized.
> Currently IndexWriter being initialized is considered same as index updated. Due to this index status nodes gets unnecessarily updated even if there is no change in index which causes the IndexTracker to reopen the index even when it has not changed. 
> We should make this more explicit and find a way to determine if index has been updated or not



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)