Author: jnioche Date: Mon Oct 14 09:45:46 2013 New Revision: 1531833 URL: http://svn.apache.org/r1531833 Log: NUTCH-1606
Modified: nutch/trunk/CHANGES.txt nutch/trunk/src/java/org/apache/nutch/crawl/FetchScheduleFactory.java nutch/trunk/src/java/org/apache/nutch/crawl/SignatureFactory.java nutch/trunk/src/java/org/apache/nutch/util/ObjectCache.java Modified: nutch/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/nutch/trunk/CHANGES.txt?rev=1531833&r1=1531832&r2=1531833&view=diff ============================================================================== --- nutch/trunk/CHANGES.txt (original) +++ nutch/trunk/CHANGES.txt Mon Oct 14 09:45:46 2013 @@ -2,6 +2,8 @@ Nutch Change Log Nutch Development Trunk +* NUTCH-1606 Check that Factory classes use the cache in a thread safe way (jnioche) + * NUTCH-1653 AbstractScoringFilter (jnioche) * NUTCH-1562 Order of execution for scoring filters (jnioche, snagel) Modified: nutch/trunk/src/java/org/apache/nutch/crawl/FetchScheduleFactory.java URL: http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/crawl/FetchScheduleFactory.java?rev=1531833&r1=1531832&r2=1531833&view=diff ============================================================================== --- nutch/trunk/src/java/org/apache/nutch/crawl/FetchScheduleFactory.java (original) +++ nutch/trunk/src/java/org/apache/nutch/crawl/FetchScheduleFactory.java Mon Oct 14 09:45:46 2013 @@ -30,7 +30,7 @@ public class FetchScheduleFactory { private FetchScheduleFactory() {} // no public ctor /** Return the FetchSchedule implementation. */ - public static FetchSchedule getFetchSchedule(Configuration conf) { + public synchronized static FetchSchedule getFetchSchedule(Configuration conf) { String clazz = conf.get("db.fetch.schedule.class", DefaultFetchSchedule.class.getName()); ObjectCache objectCache = ObjectCache.get(conf); FetchSchedule impl = (FetchSchedule)objectCache.getObject(clazz); Modified: nutch/trunk/src/java/org/apache/nutch/crawl/SignatureFactory.java URL: http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/crawl/SignatureFactory.java?rev=1531833&r1=1531832&r2=1531833&view=diff ============================================================================== --- nutch/trunk/src/java/org/apache/nutch/crawl/SignatureFactory.java (original) +++ nutch/trunk/src/java/org/apache/nutch/crawl/SignatureFactory.java Mon Oct 14 09:45:46 2013 @@ -38,7 +38,7 @@ public class SignatureFactory { private SignatureFactory() {} // no public ctor /** Return the default Signature implementation. */ - public static Signature getSignature(Configuration conf) { + public synchronized static Signature getSignature(Configuration conf) { String clazz = conf.get("db.signature.class", MD5Signature.class.getName()); ObjectCache objectCache = ObjectCache.get(conf); Signature impl = (Signature)objectCache.getObject(clazz); Modified: nutch/trunk/src/java/org/apache/nutch/util/ObjectCache.java URL: http://svn.apache.org/viewvc/nutch/trunk/src/java/org/apache/nutch/util/ObjectCache.java?rev=1531833&r1=1531832&r2=1531833&view=diff ============================================================================== --- nutch/trunk/src/java/org/apache/nutch/util/ObjectCache.java (original) +++ nutch/trunk/src/java/org/apache/nutch/util/ObjectCache.java Mon Oct 14 09:45:46 2013 @@ -36,7 +36,7 @@ public class ObjectCache { objectMap = new HashMap<String, Object>(); } - public static ObjectCache get(Configuration conf) { + public synchronized static ObjectCache get(Configuration conf) { ObjectCache objectCache = CACHE.get(conf); if (objectCache == null) { LOG.debug("No object cache found for conf=" + conf @@ -47,11 +47,11 @@ public class ObjectCache { return objectCache; } - public Object getObject(String key) { + public synchronized Object getObject(String key) { return objectMap.get(key); } - public void setObject(String key, Object value) { + public synchronized void setObject(String key, Object value) { objectMap.put(key, value); } }