mirror of https://github.com/apache/lucene.git
SOLR-917 -- Change RequestHandlers#handlers from a synchronizedMap to a ConcurrentHashMap
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@727372 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
151d8c4f04
commit
c11997b456
|
@ -21,6 +21,8 @@ import java.net.URL;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -50,8 +52,8 @@ final class RequestHandlers {
|
||||||
protected final SolrCore core;
|
protected final SolrCore core;
|
||||||
// Use a synchronized map - since the handlers can be changed at runtime,
|
// Use a synchronized map - since the handlers can be changed at runtime,
|
||||||
// the map implementation should be thread safe
|
// the map implementation should be thread safe
|
||||||
private final Map<String, SolrRequestHandler> handlers = Collections.synchronizedMap(
|
private final Map<String, SolrRequestHandler> handlers =
|
||||||
new HashMap<String,SolrRequestHandler>() );
|
new ConcurrentHashMap<String,SolrRequestHandler>() ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Trim the trailing '/' if its there.
|
* Trim the trailing '/' if its there.
|
||||||
|
@ -64,6 +66,7 @@ final class RequestHandlers {
|
||||||
*/
|
*/
|
||||||
private static String normalize( String p )
|
private static String normalize( String p )
|
||||||
{
|
{
|
||||||
|
if(p == null) return "";
|
||||||
if( p != null && p.endsWith( "/" ) && p.length() > 1 )
|
if( p != null && p.endsWith( "/" ) && p.length() > 1 )
|
||||||
return p.substring( 0, p.length()-1 );
|
return p.substring( 0, p.length()-1 );
|
||||||
|
|
||||||
|
@ -90,6 +93,7 @@ final class RequestHandlers {
|
||||||
* @return the previous handler at the given path or null
|
* @return the previous handler at the given path or null
|
||||||
*/
|
*/
|
||||||
public SolrRequestHandler register( String handlerName, SolrRequestHandler handler ) {
|
public SolrRequestHandler register( String handlerName, SolrRequestHandler handler ) {
|
||||||
|
if(handlerName == null) return null;
|
||||||
String norm = normalize( handlerName );
|
String norm = normalize( handlerName );
|
||||||
if( handler == null ) {
|
if( handler == null ) {
|
||||||
return handlers.remove( norm );
|
return handlers.remove( norm );
|
||||||
|
@ -175,7 +179,6 @@ final class RequestHandlers {
|
||||||
register(RequestHandlers.DEFAULT_HANDLER_NAME, defaultHandler);
|
register(RequestHandlers.DEFAULT_HANDLER_NAME, defaultHandler);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
register(null, defaultHandler);
|
|
||||||
register("", defaultHandler);
|
register("", defaultHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue