Author: ssmiweve
Date: 2009-09-25 21:55:00 +0200 (Fri, 25 Sep 2009)
New Revision: 7292
Modified:
branches/2.18/site-spi/src/main/java/no/sesat/search/site/config/SiteConfiguration.java
Log:
remove a performance bottleneck that occurs when sesat-kernel hasn't
initialised all factories yet and is under a heavy load. breaks the
synchronisation steps involved into smaller pieces.
Modified:
branches/2.18/site-spi/src/main/java/no/sesat/search/site/config/SiteConfiguration.java
===================================================================
---
branches/2.18/site-spi/src/main/java/no/sesat/search/site/config/SiteConfiguration.java
2009-09-24 20:27:44 UTC (rev 7291)
+++
branches/2.18/site-spi/src/main/java/no/sesat/search/site/config/SiteConfiguration.java
2009-09-25 19:55:00 UTC (rev 7292)
@@ -1,4 +1,4 @@
-/* Copyright (2006-2008) Schibsted ASA
+/* Copyright (2006-2009) Schibsted ASA
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -22,9 +22,7 @@
import no.sesat.search.site.SiteContext;
import no.sesat.search.site.SiteKeyedFactory;
import org.apache.log4j.Logger;
-
import java.util.HashMap;
-import java.util.Hashtable;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
@@ -117,15 +115,18 @@
/**
* Get all the properties. A defensive copy of the map is returned.
- * Uses clone() as Collections.unmodifableMap(properties) gives an awkward
to use Map<Object,Object>
- * So is a relatively expensive method to use.
+ * Is a relatively expensive method to use.
*
* @return defensive copy of the map is returned.
*/
public Properties getProperties() {
// new Properties(properties) does not work.
- return (Properties) properties.clone();
+ // TOO SLOW (especially on a cold container) return (Properties)
properties.clone();
+ // alternative approach that breaks synchronisation into smaller blocks
+ final Properties copy = new Properties();
+ copy.putAll(properties);
+ return copy;
}
/**
@@ -178,14 +179,14 @@
// SiteConfiguration.Context for this site & UrlResourceLoader.
final SiteConfiguration stc = SiteConfiguration.instanceOf(new
SiteConfiguration.Context() {
+ @Override
public Site getSite() {
return site;
}
-
public boolean doesResourceExist(final String resource) {
return
UrlResourceLoader.doesUrlExist(UrlResourceLoader.getURL(resource, site));
}
-
+ @Override
public PropertiesLoader newPropertiesLoader(
final SiteContext siteCxt,
final String resource,
@@ -197,6 +198,7 @@
return stc;
}
+ @Override
public boolean remove(final Site site) {
try {
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits