Chetan Mehrotra created OAK-4404:
------------------------------------

             Summary: DocumentNodeState.childNodeEntries perform more fetches 
than required
                 Key: OAK-4404
                 URL: https://issues.apache.org/jira/browse/OAK-4404
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: documentmk
            Reporter: Chetan Mehrotra
            Assignee: Chetan Mehrotra
            Priority: Minor


{{DocumentNodeState}} lazily fetches the child node entries in batches of 
increasing fetchSize starting at 100. Now we have a commit where we add 200 
child nodes under /a. This list of child node entries would be cached (all 200 
entries). 

Now if the code later tries to read all these recently added child nodes then 
DocumentNodeState would perform a fetch for initial 100. The iterator that is 
returned though is not limited to 100 and returns all 200 entries. As the 
iterator proceeds {{currentRemaining}} moves to -100 (it starts at 100 the 
expected fetchSize).
This causes hasMore to perform one more fetch which then results in a remote 
call as its a cache miss (cache key inlcudes the base name from where the list 
should start).

This extra call can be avoided if the {{DocumentNodeStore}} can convey the 
information that the returned iterator is complete and in such a case 
DocumentNodeState does not have to rely on its internal bookkeeping.

This change would also be required for secondary node store based persistent 
cache to work. In those case the cache would be able to provide complete 
iterator but DocumentNodeState would not be able to make best use of this if it 
sticks to the fetch based approach



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

Reply via email to