Author: shalin
Date: Wed Dec 17 05:12:40 2008
New Revision: 727372
URL: http://svn.apache.org/viewvc?rev=727372&view=rev
Log:
SOLR-917 -- Change RequestHandlers#handlers from a synchronizedMap to a
ConcurrentHashMap
Modified:
lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java
Modified: lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java?rev=727372&r1=727371&r2=727372&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java Wed
Dec 17 05:12:40 2008
@@ -21,6 +21,8 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,8 +52,8 @@
protected final SolrCore core;
// Use a synchronized map - since the handlers can be changed at runtime,
// the map implementation should be thread safe
- private final Map<String, SolrRequestHandler> handlers =
Collections.synchronizedMap(
- new HashMap<String,SolrRequestHandler>() );
+ private final Map<String, SolrRequestHandler> handlers =
+ new ConcurrentHashMap<String,SolrRequestHandler>() ;
/**
* Trim the trailing '/' if its there.
@@ -64,6 +66,7 @@
*/
private static String normalize( String p )
{
+ if(p == null) return "";
if( p != null && p.endsWith( "/" ) && p.length() > 1 )
return p.substring( 0, p.length()-1 );
@@ -90,6 +93,7 @@
* @return the previous handler at the given path or null
*/
public SolrRequestHandler register( String handlerName, SolrRequestHandler
handler ) {
+ if(handlerName == null) return null;
String norm = normalize( handlerName );
if( handler == null ) {
return handlers.remove( norm );
@@ -175,7 +179,6 @@
register(RequestHandlers.DEFAULT_HANDLER_NAME, defaultHandler);
}
}
- register(null, defaultHandler);
register("", defaultHandler);
}