Author: bpoussin Date: 2011-02-23 18:20:17 +0100 (Wed, 23 Feb 2011) New Revision: 736 Url: http://nuiton.org/repositories/revision/wikitty/736 Log: prevent loop in TreeNode parent search algo Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java =================================================================== --- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-02-23 16:59:49 UTC (rev 735) +++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-02-23 17:20:17 UTC (rev 736) @@ -491,7 +491,8 @@ SolrInputDocument doc, Map<String, SolrDocument> tree) { Set<String> parents = new HashSet<String>(); String root = null; - String parentId = (String)doc.getFieldValue(SOLR_ID); + String treeNodeId = (String)doc.getFieldValue(SOLR_ID); + String parentId = treeNodeId; if (parentId == null) { throw new WikittyException("parentId is null, but this must be impossible"); } @@ -528,8 +529,16 @@ } } if (nextParentId != null) { - parents.add(nextParentId); - parentId = nextParentId; + if (parents.contains(nextParentId)) { + log.error(String.format("Tree with TreeNode '%s' have loop" + + " at node %s->%s all parents are %s. Set root with" + + " last valide parent '%s'", + treeNodeId, parentId, nextParentId, parents, parentId)); + root = parentId; + } else { + parents.add(nextParentId); + parentId = nextParentId; + } } else { root = parentId; }
participants (1)
-
bpoussin@users.nuiton.org