[jira] Commented: (JCR-1213) UUIDDocId cache does not work properly because of weakReferences in combination with new instance for combined indexreader

2007-11-18 Thread Ard Schrijvers (JIRA)

[ 
https://issues.apache.org/jira/browse/JCR-1213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12543374
 ] 

Ard Schrijvers commented on JCR-1213:
-

ATM I have been able to change some parts to store in UUIDDocId a reference to 
the segmentIndexReader the documentNumber was found in.  This means that not 
the entire cache is lost when the multi Index changes, but only those parts 
that involve a segment change. 

Now, I am looking at a clean way to recompute the docNumber, because even if 
the segment index reader did not change, the docNumber might (quite likely) 
because the multiIndexReader has changed, hence the  individual reader offsets 
as well. 

I'll try to find time next week for it. Perhaps somebody has an idea how to 
implement it 'clean', because I do not really like the way I am heading with 
changing the SingleTermDocs to store the docNumber with offset, and also store 
the docNumber without, to have the doc number available in the segment. This 
implies, in DocId I have to cast to SingleTermDocsetc etc which is not 
nice. 

WDOT? Any ideas? Or should we refactor a few parts,  to be able to recompute 
the docNumber? 



 UUIDDocId cache does not work properly because of weakReferences in 
 combination with new instance for combined indexreader 
 ---

 Key: JCR-1213
 URL: https://issues.apache.org/jira/browse/JCR-1213
 Project: Jackrabbit
  Issue Type: Improvement
  Components: query
Affects Versions: 1.3.3
Reporter: Ard Schrijvers
 Fix For: 1.4


 Queries that use ChildAxisQuery or DescendantSelfAxisQuery make use of 
 getParent() functions to know wether the parents are correct and if the 
 result is allowed. The getParent() is called recursively for every hit, and 
 can become very expensive. Hence, in DocId.UUIDDocId, the parents are cached. 
 Currently,  docId.UUIDDocId's are cached by having a WeakRefence to the 
 CombinedIndexReader, but, this CombinedIndexReader is recreated all the time, 
 implying that a gc() is allowed to remove the 'expensive' cache.
 A much better solution is to not have a weakReference to the 
 CombinedIndexReader, but to a reference of each indexreader segment. This 
 means, that in getParent(int n) in SearchIndex the return 
 return id.getDocumentNumber(this) needs to be replaced by return 
 id.getDocumentNumber(subReaders[i]); and something similar in 
 CachingMultiReader. 
 That is all. Obviously, when a node/property is added/removed/changed, some 
 parts of the cached DocId.UUIDDocId will be invalid, but mainly small indexes 
 are updated frequently, which obviously are less expensive to recompute.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



Status of proposed JCR 20. changes

2007-11-18 Thread Michael Wechner

Hi

Which of the proposed changes have been accepted resp. will be implemented?

http://wiki.apache.org/jackrabbit/Proposed_JCR_2.0_API_Changes

Thanks

Michael

--
Michael Wechner
Wyona  -   Open Source Content Management   -Apache Lenya
http://www.wyona.com  http://lenya.apache.org
[EMAIL PROTECTED][EMAIL PROTECTED]
+41 44 272 91 61