diff --git a/Essentials/src/com/earth2me/essentials/UUIDMap.java b/Essentials/src/com/earth2me/essentials/UUIDMap.java index f42ea48f4..e77a9149d 100644 --- a/Essentials/src/com/earth2me/essentials/UUIDMap.java +++ b/Essentials/src/com/earth2me/essentials/UUIDMap.java @@ -45,45 +45,56 @@ public class UUIDMap userList.createNewFile(); } - final BufferedReader reader = new BufferedReader(new FileReader(userList)); - try + synchronized (pendingDiskWrites) { - while (true) + if (ess.getSettings().isDebug()) { - final String line = reader.readLine(); - if (line == null) + ess.getLogger().log(Level.INFO, "Reading usermap from disk"); + } + + names.clear(); + history.clear(); + + final BufferedReader reader = new BufferedReader(new FileReader(userList)); + try + { + while (true) { - break; - } - else - { - final String[] values = splitPattern.split(line); - if (values.length == 2) + final String line = reader.readLine(); + if (line == null) { - final String name = values[0]; - final UUID uuid = UUID.fromString(values[1]); - names.put(name, uuid); - if (!history.containsKey(uuid)) + break; + } + else + { + final String[] values = splitPattern.split(line); + if (values.length == 2) { - final ArrayList list = new ArrayList(); - list.add(name); - history.put(uuid, list); - } - else - { - final ArrayList list = history.get(uuid); - if (!list.contains(name)) + final String name = values[0]; + final UUID uuid = UUID.fromString(values[1]); + names.put(name, uuid); + if (!history.containsKey(uuid)) { + final ArrayList list = new ArrayList(); list.add(name); + history.put(uuid, list); + } + else + { + final ArrayList list = history.get(uuid); + if (!list.contains(name)) + { + list.add(name); + } } } } } } - } - finally - { - reader.close(); + finally + { + reader.close(); + } } } catch (IOException ex) @@ -99,6 +110,10 @@ public class UUIDMap public void forceWriteUUIDMap() { + if (ess.getSettings().isDebug()) + { + ess.getLogger().log(Level.INFO, "Forcing usermap write to disk"); + } try { Future future = _writeUUIDMap();; @@ -119,7 +134,7 @@ public class UUIDMap public Future _writeUUIDMap() { - final ConcurrentSkipListMap names = ess.getUserMap().getNames().clone(); + final ConcurrentSkipListMap names = ess.getUserMap().getNames(); if (names.size() < 1) { return null; diff --git a/Essentials/src/com/earth2me/essentials/UserMap.java b/Essentials/src/com/earth2me/essentials/UserMap.java index 1e6b54c9b..50bbb8ff9 100644 --- a/Essentials/src/com/earth2me/essentials/UserMap.java +++ b/Essentials/src/com/earth2me/essentials/UserMap.java @@ -51,7 +51,6 @@ public class UserMap extends CacheLoader implements IConf return; } keys.clear(); - names.clear(); users.invalidateAll(); for (String string : userdir.list()) { @@ -200,7 +199,7 @@ public class UserMap extends CacheLoader implements IConf public Set getAllUniqueUsers() { - return Collections.unmodifiableSet(keys); + return Collections.unmodifiableSet(keys.clone()); } public int getUniqueUsers() @@ -208,12 +207,12 @@ public class UserMap extends CacheLoader implements IConf return keys.size(); } - public ConcurrentSkipListMap getNames() + protected ConcurrentSkipListMap getNames() { return names; } - public ConcurrentSkipListMap> getHistory() + protected ConcurrentSkipListMap> getHistory() { return history; }