Author: toad
Date: 2007-07-14 15:11:16 +0000 (Sat, 14 Jul 2007)
New Revision: 14112
Modified:
trunk/freenet/src/freenet/config/SubConfig.java
Log:
Minimal locking
Modified: trunk/freenet/src/freenet/config/SubConfig.java
===================================================================
--- trunk/freenet/src/freenet/config/SubConfig.java 2007-07-14 15:08:02 UTC
(rev 14111)
+++ trunk/freenet/src/freenet/config/SubConfig.java 2007-07-14 15:11:16 UTC
(rev 14112)
@@ -7,6 +7,7 @@
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+import java.util.Map.Entry;
import freenet.l10n.L10n;
import freenet.support.Logger;
@@ -199,13 +200,16 @@
public SimpleFieldSet exportFieldSet(int configRequestType, boolean
withDefaults) {
SimpleFieldSet fs = new SimpleFieldSet(true);
- Set entrySet = map.entrySet();
- Iterator i = entrySet.iterator();
+ // FIXME is any locking at all necessary here? After it has
finished init, it's constant...
+ Map.Entry[] entries;
+ synchronized(this) {
+ entries = (Entry[]) map.entrySet().toArray(new
Map.Entry[map.size()]);
+ }
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR)
Logger.minor(this, "Prefix="+prefix);
- while(i.hasNext()) {
- Map.Entry entry = (Map.Entry) i.next();
+ for(int i=0;i<entries.length;i++) {
+ Map.Entry entry = (Map.Entry) entries[i];
String key = (String) entry.getKey();
Option o = (Option) entry.getValue();
// if(logMINOR)