Author: ssmiweve
Date: 2008-11-28 20:51:03 +0100 (Fri, 28 Nov 2008)
New Revision: 7001
Modified:
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/FastQueryMatchingEvaluatorFactory.java
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/JepEvaluatorFactory.java
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/RegExpEvaluatorFactory.java
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/SolrEvaluatorFactory.java
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
Log:
performance improvements:
check for empty instance before going into writeLock
configure timeout on waiting for construction thread
Modified:
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/FastQueryMatchingEvaluatorFactory.java
===================================================================
---
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/FastQueryMatchingEvaluatorFactory.java
2008-11-28 11:52:30 UTC (rev 7000)
+++
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/FastQueryMatchingEvaluatorFactory.java
2008-11-28 19:51:03 UTC (rev 7001)
@@ -25,6 +25,8 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import no.sesat.search.site.SiteKeyedFactoryInstantiationException;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
@@ -109,7 +111,7 @@
private VeryFastTokenEvaluator getFastEvaluator() throws
EvaluationException {
try {
- fastEvaluatorCreator.get();
+ fastEvaluatorCreator.get(1000, TimeUnit.MILLISECONDS);
} catch (InterruptedException ex) {
LOG.error(ERR_FAST_EVALUATOR_CREATOR_INTERRUPTED, ex);
@@ -117,6 +119,9 @@
} catch (ExecutionException ex) {
LOG.error(ERR_FAST_EVALUATOR_CREATOR_INTERRUPTED, ex);
throw new
EvaluationException(ERR_FAILED_CONSTRUCTING_FAST_EVALUATOR, ex);
+ } catch (TimeoutException ex) {
+ LOG.error(ERR_FAST_EVALUATOR_CREATOR_INTERRUPTED, ex);
+ throw new
EvaluationException(ERR_FAILED_CONSTRUCTING_FAST_EVALUATOR, ex);
}
if( null == fastEvaluator ){
throw new
EvaluationException(ERR_FAILED_CONSTRUCTING_FAST_EVALUATOR, new
NullPointerException());
Modified:
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/JepEvaluatorFactory.java
===================================================================
---
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/JepEvaluatorFactory.java
2008-11-28 11:52:30 UTC (rev 7000)
+++
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/JepEvaluatorFactory.java
2008-11-28 19:51:03 UTC (rev 7001)
@@ -95,58 +95,59 @@
));
}
- try{
- EVALUATORS_LOCK.writeLock().lock();
+ if(null == EVALUATORS.get(site)){
- if(null == EVALUATORS.get(site)){
+ try{
+ EVALUATORS_LOCK.writeLock().lock();
- // create map entry for this site
- EVALUATORS.put(site, new
HashMap<TokenPredicate,JepTokenEvaluator>());
- final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
- factory.setValidating(false);
- final DocumentBuilder builder = factory.newDocumentBuilder();
+ // create map entry for this site
+ EVALUATORS.put(site, new
HashMap<TokenPredicate,JepTokenEvaluator>());
- final DocumentLoader loader = cxt.newDocumentLoader(cxt,
JEP_EVALUATOR_XMLFILE, builder);
+ final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
+ factory.setValidating(false);
+ final DocumentBuilder builder =
factory.newDocumentBuilder();
- loader.abut();
- LOG.info("Parsing " + JEP_EVALUATOR_XMLFILE + " started");
- final Document doc = loader.getDocument();
+ final DocumentLoader loader = cxt.newDocumentLoader(cxt,
JEP_EVALUATOR_XMLFILE, builder);
- assert null != doc : "No document loaded for " +
site.getName();
+ loader.abut();
+ LOG.info("Parsing " + JEP_EVALUATOR_XMLFILE + " started");
+ final Document doc = loader.getDocument();
- final Element root = doc.getDocumentElement();
- if(null != root){
- final NodeList evaluators =
root.getElementsByTagName("evaluator");
- for (int i = 0; i < evaluators.getLength(); ++i) {
+ assert null != doc : "No document loaded for " +
site.getName();
- final Element evaluator = (Element) evaluators.item(i);
+ final Element root = doc.getDocumentElement();
+ if(null != root){
+ final NodeList evaluators =
root.getElementsByTagName("evaluator");
+ for (int i = 0; i < evaluators.getLength(); ++i) {
- final String tokenName =
evaluator.getAttribute("token");
- LOG.info(" ->[EMAIL PROTECTED]: " + tokenName);
+ final Element evaluator = (Element)
evaluators.item(i);
- TokenPredicate token;
- try{
- token =
TokenPredicateUtility.getTokenPredicate(tokenName);
+ final String tokenName =
evaluator.getAttribute("token");
+ LOG.info(" ->[EMAIL PROTECTED]: " + tokenName);
- }catch(IllegalArgumentException iae){
- LOG.debug(tokenName + " does not exist. Will
create it. Underlying exception was " + iae);
- token =
TokenPredicateUtility.createAnonymousTokenPredicate(
- tokenName);
- }
+ TokenPredicate token;
+ try{
+ token =
TokenPredicateUtility.getTokenPredicate(tokenName);
- final boolean queryDep =
Boolean.parseBoolean(evaluator.getAttribute("query-dependant"));
- LOG.info(" ->[EMAIL PROTECTED]: " + queryDep);
+ }catch(IllegalArgumentException iae){
+ LOG.debug(tokenName + " does not exist. Will
create it. Underlying exception was " + iae);
+ token =
TokenPredicateUtility.createAnonymousTokenPredicate(
+ tokenName);
+ }
- final JepTokenEvaluator jepTokenEvaluator = new
JepTokenEvaluator("*", queryDep);
- EVALUATORS.get(site).put(token, jepTokenEvaluator);
+ final boolean queryDep =
Boolean.parseBoolean(evaluator.getAttribute("query-dependant"));
+ LOG.info(" ->[EMAIL PROTECTED]: " + queryDep);
+ final JepTokenEvaluator jepTokenEvaluator = new
JepTokenEvaluator("*", queryDep);
+ EVALUATORS.get(site).put(token, jepTokenEvaluator);
+
+ }
}
- }
- LOG.info("Parsing " + JEP_EVALUATOR_XMLFILE + " finished");
+ LOG.info("Parsing " + JEP_EVALUATOR_XMLFILE + " finished");
+ }finally{
+ EVALUATORS_LOCK.writeLock().unlock();
}
- }finally{
- EVALUATORS_LOCK.writeLock().unlock();
}
}
Modified:
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/RegExpEvaluatorFactory.java
===================================================================
---
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/RegExpEvaluatorFactory.java
2008-11-28 11:52:30 UTC (rev 7000)
+++
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/RegExpEvaluatorFactory.java
2008-11-28 19:51:03 UTC (rev 7001)
@@ -99,76 +99,77 @@
));
}
- try{
- EVALUATORS_LOCK.writeLock().lock();
+ if(null == EVALUATORS.get(site)){
- if(null == EVALUATORS.get(site)){
- // create map entry for this site
- EVALUATORS.put(site, new
HashMap<TokenPredicate,RegExpTokenEvaluator>());
+ try{
+ EVALUATORS_LOCK.writeLock().lock();
+ // create map entry for this site
+ EVALUATORS.put(site, new
HashMap<TokenPredicate,RegExpTokenEvaluator>());
- final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
- factory.setValidating(false);
- final DocumentBuilder builder = factory.newDocumentBuilder();
- final DocumentLoader loader
- = cxt.newDocumentLoader(cxt, REGEXP_EVALUATOR_XMLFILE,
builder);
- loader.abut();
- LOG.info("Parsing " + REGEXP_EVALUATOR_XMLFILE + " started");
- final Document doc = loader.getDocument();
+ final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
+ factory.setValidating(false);
+ final DocumentBuilder builder =
factory.newDocumentBuilder();
+ final DocumentLoader loader
+ = cxt.newDocumentLoader(cxt,
REGEXP_EVALUATOR_XMLFILE, builder);
- assert null != doc : "No document loaded for " +
site.getName();
+ loader.abut();
+ LOG.info("Parsing " + REGEXP_EVALUATOR_XMLFILE + "
started");
+ final Document doc = loader.getDocument();
- final Element root = doc.getDocumentElement();
- if(null != root){
- final NodeList evaluators =
root.getElementsByTagName("evaluator");
- for (int i = 0; i < evaluators.getLength(); ++i) {
+ assert null != doc : "No document loaded for " +
site.getName();
- final Element evaluator = (Element) evaluators.item(i);
+ final Element root = doc.getDocumentElement();
+ if(null != root){
+ final NodeList evaluators =
root.getElementsByTagName("evaluator");
+ for (int i = 0; i < evaluators.getLength(); ++i) {
- final String tokenName =
evaluator.getAttribute("token");
- LOG.info(" ->[EMAIL PROTECTED]: " + tokenName);
+ final Element evaluator = (Element)
evaluators.item(i);
- TokenPredicate token;
- try{
- token =
TokenPredicateUtility.getTokenPredicate(tokenName);
+ final String tokenName =
evaluator.getAttribute("token");
+ LOG.info(" ->[EMAIL PROTECTED]: " + tokenName);
- }catch(IllegalArgumentException iae){
- LOG.debug(tokenName + " does not exist. Will
create it. Underlying exception was " + iae);
- token =
TokenPredicateUtility.createAnonymousTokenPredicate(
- tokenName);
- }
+ TokenPredicate token;
+ try{
+ token =
TokenPredicateUtility.getTokenPredicate(tokenName);
- final boolean queryDep =
Boolean.parseBoolean(evaluator.getAttribute("query-dependant"));
- LOG.info(" ->[EMAIL PROTECTED]: " + queryDep);
+ }catch(IllegalArgumentException iae){
+ LOG.debug(tokenName + " does not exist. Will
create it. Underlying exception was " + iae);
+ token =
TokenPredicateUtility.createAnonymousTokenPredicate(
+ tokenName);
+ }
- final Collection<Pattern> compiled = new
ArrayList<Pattern>();
+ final boolean queryDep =
Boolean.parseBoolean(evaluator.getAttribute("query-dependant"));
+ LOG.info(" ->[EMAIL PROTECTED]: " + queryDep);
- final NodeList patterns =
evaluator.getElementsByTagName("pattern");
- for (int j = 0; j < patterns.getLength(); ++j) {
- final Element pattern = (Element) patterns.item(j);
+ final Collection<Pattern> compiled = new
ArrayList<Pattern>();
- final String expression =
pattern.getFirstChild().getNodeValue();
- LOG.info(" --->pattern: " + expression);
+ final NodeList patterns =
evaluator.getElementsByTagName("pattern");
+ for (int j = 0; j < patterns.getLength(); ++j) {
+ final Element pattern = (Element)
patterns.item(j);
- // (^|\s) or ($|\s) is neccessary to avoid
matching fragments of words.
- final String prefix = expression.startsWith("^") ?
"" : "(^|\\s)";
- final String suffix = expression.endsWith("$") ?
"" : "(\\:|$|\\s)";
- // compile pattern
- final Pattern p = Pattern.compile(prefix +
expression + suffix, REG_EXP_OPTIONS);
- compiled.add(p);
- }
+ final String expression =
pattern.getFirstChild().getNodeValue();
+ LOG.info(" --->pattern: " + expression);
- final RegExpTokenEvaluator regExpTokenEvaluator = new
RegExpTokenEvaluator(compiled, queryDep);
- EVALUATORS.get(site).put(token, regExpTokenEvaluator);
+ // (^|\s) or ($|\s) is neccessary to avoid
matching fragments of words.
+ final String prefix =
expression.startsWith("^") ? "" : "(^|\\s)";
+ final String suffix = expression.endsWith("$")
? "" : "(\\:|$|\\s)";
+ // compile pattern
+ final Pattern p = Pattern.compile(prefix +
expression + suffix, REG_EXP_OPTIONS);
+ compiled.add(p);
+ }
+ final RegExpTokenEvaluator regExpTokenEvaluator =
new RegExpTokenEvaluator(compiled, queryDep);
+ EVALUATORS.get(site).put(token,
regExpTokenEvaluator);
+
+ }
}
- }
- LOG.info("Parsing " + REGEXP_EVALUATOR_XMLFILE + " finished");
+ LOG.info("Parsing " + REGEXP_EVALUATOR_XMLFILE + "
finished");
+
+ }finally{
+ EVALUATORS_LOCK.writeLock().unlock();
}
-
- }finally{
- EVALUATORS_LOCK.writeLock().unlock();
}
}
Modified:
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/SolrEvaluatorFactory.java
===================================================================
---
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/SolrEvaluatorFactory.java
2008-11-28 11:52:30 UTC (rev 7000)
+++
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/SolrEvaluatorFactory.java
2008-11-28 19:51:03 UTC (rev 7001)
@@ -28,6 +28,8 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -214,73 +216,73 @@
));
}
- try{
- LIST_NAMES_LOCK.writeLock().lock();
+ if(null == LIST_NAMES.get(site)){
- if(null == LIST_NAMES.get(site)){
+ try{
+ LIST_NAMES_LOCK.writeLock().lock();
- // create map entry for this site
- LIST_NAMES.put(site, new HashMap<TokenPredicate,String[]>());
+ // create map entry for this site
+ LIST_NAMES.put(site, new
HashMap<TokenPredicate,String[]>());
- // initialise this site's configuration
- final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
- final DocumentBuilder builder = factory.newDocumentBuilder();
+ // initialise this site's configuration
+ final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
+ final DocumentBuilder builder =
factory.newDocumentBuilder();
- final DocumentLoader loader = cxt.newDocumentLoader(cxt,
SOLR_EVALUATOR_XMLFILE, builder);
- loader.abut();
+ final DocumentLoader loader = cxt.newDocumentLoader(cxt,
SOLR_EVALUATOR_XMLFILE, builder);
+ loader.abut();
- LOG.info("Parsing " + SOLR_EVALUATOR_XMLFILE + " started");
- final Map<TokenPredicate,String[]> listNames =
LIST_NAMES.get(site);
- final Document doc = loader.getDocument();
+ LOG.info("Parsing " + SOLR_EVALUATOR_XMLFILE + " started");
+ final Map<TokenPredicate,String[]> listNames =
LIST_NAMES.get(site);
+ final Document doc = loader.getDocument();
- if(null != doc && null != doc.getDocumentElement()){
+ if(null != doc && null != doc.getDocumentElement()){
- final Element root = doc.getDocumentElement();
- final NodeList lists = root.getElementsByTagName("list");
- for (int i = 0; i < lists.getLength(); ++i) {
+ final Element root = doc.getDocumentElement();
+ final NodeList lists =
root.getElementsByTagName("list");
+ for (int i = 0; i < lists.getLength(); ++i) {
- final Element list = (Element) lists.item(i);
+ final Element list = (Element) lists.item(i);
- final String tokenName = list.getAttribute("token");
- LOG.info(" ->[EMAIL PROTECTED]: " + tokenName);
+ final String tokenName =
list.getAttribute("token");
+ LOG.info(" ->[EMAIL PROTECTED]: " + tokenName);
- TokenPredicate token;
- try{
- token =
TokenPredicateUtility.getTokenPredicate(tokenName);
+ TokenPredicate token;
+ try{
+ token =
TokenPredicateUtility.getTokenPredicate(tokenName);
- }catch(IllegalArgumentException iae){
- LOG.debug(tokenName + " does not exist. Will
create it. Underlying exception was " + iae);
- token =
TokenPredicateUtility.createAnonymousTokenPredicate(tokenName);
- }
+ }catch(IllegalArgumentException iae){
+ LOG.debug(tokenName + " does not exist. Will
create it. Underlying exception was " + iae);
+ token =
TokenPredicateUtility.createAnonymousTokenPredicate(tokenName);
+ }
- final String[] listNameArr =
list.getAttribute("list-name").split(",");
- LOG.info(" ->lists: " +
list.getAttribute("list-name"));
+ final String[] listNameArr =
list.getAttribute("list-name").split(",");
+ LOG.info(" ->lists: " +
list.getAttribute("list-name"));
- // update each listname to the format the fast query
matching servers use
- if(null != listNameArr){
- for(int j = 0; j < listNameArr.length; ++j){
- listNameArr[j] = listNameArr[j];
+ // update each listname to the format the fast
query matching servers use
+ if(null != listNameArr){
+ for(int j = 0; j < listNameArr.length; ++j){
+ listNameArr[j] = listNameArr[j];
+ }
+
+ // put the listnames in
+ Arrays.sort(listNameArr, null);
+ listNames.put(token, listNameArr);
}
- // put the listnames in
- Arrays.sort(listNameArr, null);
- listNames.put(token, listNameArr);
+
}
-
-
}
- }
- LOG.info("Parsing " + SOLR_EVALUATOR_XMLFILE + " finished");
+ LOG.info("Parsing " + SOLR_EVALUATOR_XMLFILE + "
finished");
+ }finally{
+ LIST_NAMES_LOCK.writeLock().unlock();
}
- }finally{
- LIST_NAMES_LOCK.writeLock().unlock();
}
}
private SolrTokenEvaluator getSolrEvaluator() throws EvaluationException {
try {
- solrEvaluatorCreator.get();
+ solrEvaluatorCreator.get(1000, TimeUnit.MILLISECONDS);
} catch (InterruptedException ex) {
LOG.error(ex.getMessage(), ex);
@@ -288,6 +290,9 @@
} catch (ExecutionException ex) {
LOG.error(ex.getMessage(), ex);
throw new EvaluationException(ex.getMessage(), ex);
+ } catch (TimeoutException ex) {
+ LOG.error(ex.getMessage(), ex);
+ throw new EvaluationException(ex.getMessage(), ex);
}
if( null == solrEvaluator ){
throw new EvaluationException("NPE", new NullPointerException());
Modified:
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
===================================================================
---
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
2008-11-28 11:52:30 UTC (rev 7000)
+++
branches/2.18/generic.sesam/query-evaluation/src/main/java/no/sesat/search/query/token/VeryFastTokenEvaluator.java
2008-11-28 19:51:03 UTC (rev 7001)
@@ -279,65 +279,65 @@
));
}
- try{
- LIST_NAMES_LOCK.writeLock().lock();
+ if(null == LIST_NAMES.get(site)){
+ try{
+ LIST_NAMES_LOCK.writeLock().lock();
- if(null == LIST_NAMES.get(site)){
- // create map entry for this site
- LIST_NAMES.put(site, new HashMap<TokenPredicate,String[]>());
+ // create map entry for this site
+ LIST_NAMES.put(site, new
HashMap<TokenPredicate,String[]>());
- // initialise this site's configuration
- final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
- final DocumentBuilder builder = factory.newDocumentBuilder();
- final DocumentLoader loader = cxt.newDocumentLoader(cxt,
VERYFAST_EVALUATOR_XMLFILE, builder);
- loader.abut();
+ // initialise this site's configuration
+ final DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
+ final DocumentBuilder builder =
factory.newDocumentBuilder();
+ final DocumentLoader loader = cxt.newDocumentLoader(cxt,
VERYFAST_EVALUATOR_XMLFILE, builder);
+ loader.abut();
- LOG.info("Parsing " + VERYFAST_EVALUATOR_XMLFILE + " started");
- final Map<TokenPredicate,String[]> listNames =
LIST_NAMES.get(site);
- final Document doc = loader.getDocument();
+ LOG.info("Parsing " + VERYFAST_EVALUATOR_XMLFILE + "
started");
+ final Map<TokenPredicate,String[]> listNames =
LIST_NAMES.get(site);
+ final Document doc = loader.getDocument();
- if(null != doc && null != doc.getDocumentElement()){
+ if(null != doc && null != doc.getDocumentElement()){
- final Element root = doc.getDocumentElement();
- final NodeList lists = root.getElementsByTagName("list");
- for (int i = 0; i < lists.getLength(); ++i) {
+ final Element root = doc.getDocumentElement();
+ final NodeList lists =
root.getElementsByTagName("list");
+ for (int i = 0; i < lists.getLength(); ++i) {
- final Element list = (Element) lists.item(i);
+ final Element list = (Element) lists.item(i);
- final String tokenName = list.getAttribute("token");
- LOG.info(" ->[EMAIL PROTECTED]: " + tokenName);
+ final String tokenName =
list.getAttribute("token");
+ LOG.info(" ->[EMAIL PROTECTED]: " + tokenName);
- TokenPredicate token;
- try{
- token =
TokenPredicateUtility.getTokenPredicate(tokenName);
+ TokenPredicate token;
+ try{
+ token =
TokenPredicateUtility.getTokenPredicate(tokenName);
- }catch(IllegalArgumentException iae){
- LOG.debug(tokenName + " does not exist. Will
create it. Underlying exception was " + iae);
- token =
TokenPredicateUtility.createAnonymousTokenPredicate(tokenName);
- }
+ }catch(IllegalArgumentException iae){
+ LOG.debug(tokenName + " does not exist. Will
create it. Underlying exception was " + iae);
+ token =
TokenPredicateUtility.createAnonymousTokenPredicate(tokenName);
+ }
- final String[] listNameArr =
list.getAttribute("list-name").split(",");
- LOG.info(" ->lists: " +
list.getAttribute("list-name"));
+ final String[] listNameArr =
list.getAttribute("list-name").split(",");
+ LOG.info(" ->lists: " +
list.getAttribute("list-name"));
- // update each listname to the format the fast query
matching servers use
- if(null != listNameArr){
- for(int j = 0; j < listNameArr.length; ++j){
- listNameArr[j] = LIST_PREFIX + listNameArr[j]
+ LIST_SUFFIX;
+ // update each listname to the format the fast
query matching servers use
+ if(null != listNameArr){
+ for(int j = 0; j < listNameArr.length; ++j){
+ listNameArr[j] = LIST_PREFIX +
listNameArr[j] + LIST_SUFFIX;
+ }
+
+ // put the listnames in
+ Arrays.sort(listNameArr, null);
+ listNames.put(token, listNameArr);
}
- // put the listnames in
- Arrays.sort(listNameArr, null);
- listNames.put(token, listNameArr);
+
}
-
-
}
- }
- LOG.info("Parsing " + VERYFAST_EVALUATOR_XMLFILE + "
finished");
+ LOG.info("Parsing " + VERYFAST_EVALUATOR_XMLFILE + "
finished");
+ }finally{
+ LIST_NAMES_LOCK.writeLock().unlock();
}
- }finally{
- LIST_NAMES_LOCK.writeLock().unlock();
}
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits