You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by al...@apache.org on 2011/07/05 10:21:10 UTC
svn commit: r1142919 -
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
Author: alexparvulescu
Date: Tue Jul 5 08:21:10 2011
New Revision: 1142919
URL: http://svn.apache.org/viewvc?rev=1142919&view=rev
Log:
JCR-2918 Avoid unnecessary index reader calls when using aggregate definitions
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java?rev=1142919&r1=1142918&r2=1142919&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java Tue Jul 5 08:21:10 2011
@@ -1619,45 +1619,46 @@ public class SearchIndex extends Abstrac
*/
protected void retrieveAggregateRoot(
Set<NodeId> removedIds, Map<NodeId, NodeState> map) {
- if (indexingConfig != null) {
- AggregateRule[] aggregateRules = indexingConfig.getAggregateRules();
- if (aggregateRules == null) {
- return;
- }
- int found = 0;
- long time = System.currentTimeMillis();
+ if(removedIds.isEmpty() || indexingConfig == null){
+ return;
+ }
+ AggregateRule[] aggregateRules = indexingConfig.getAggregateRules();
+ if (aggregateRules == null) {
+ return;
+ }
+ int found = 0;
+ long time = System.currentTimeMillis();
+ try {
+ CachingMultiIndexReader reader = index.getIndexReader();
try {
- CachingMultiIndexReader reader = index.getIndexReader();
+ Term aggregateIds =
+ new Term(FieldNames.AGGREGATED_NODE_UUID, "");
+ TermDocs tDocs = reader.termDocs();
try {
- Term aggregateIds =
- new Term(FieldNames.AGGREGATED_NODE_UUID, "");
- TermDocs tDocs = reader.termDocs();
- try {
- ItemStateManager ism = getContext().getItemStateManager();
- for (NodeId id : removedIds) {
- aggregateIds =
- aggregateIds.createTerm(id.toString());
- tDocs.seek(aggregateIds);
- while (tDocs.next()) {
- Document doc = reader.document(
- tDocs.doc(), FieldSelectors.UUID);
- NodeId nId = new NodeId(doc.get(FieldNames.UUID));
- map.put(nId, (NodeState) ism.getItemState(nId));
- found++;
- }
+ ItemStateManager ism = getContext().getItemStateManager();
+ for (NodeId id : removedIds) {
+ aggregateIds =
+ aggregateIds.createTerm(id.toString());
+ tDocs.seek(aggregateIds);
+ while (tDocs.next()) {
+ Document doc = reader.document(
+ tDocs.doc(), FieldSelectors.UUID);
+ NodeId nId = new NodeId(doc.get(FieldNames.UUID));
+ map.put(nId, (NodeState) ism.getItemState(nId));
+ found++;
}
- } finally {
- tDocs.close();
}
} finally {
- reader.release();
+ tDocs.close();
}
- } catch (Exception e) {
- log.warn("Exception while retrieving aggregate roots", e);
+ } finally {
+ reader.release();
}
- time = System.currentTimeMillis() - time;
- log.debug("Retrieved {} aggregate roots in {} ms.", found, time);
+ } catch (Exception e) {
+ log.warn("Exception while retrieving aggregate roots", e);
}
+ time = System.currentTimeMillis() - time;
+ log.debug("Retrieved {} aggregate roots in {} ms.", found, time);
}
//----------------------------< internal >----------------------------------