From e07a346e16555ef012b260d9431cd1982b073f4c Mon Sep 17 00:00:00 2001 From: Luck Date: Thu, 23 Jun 2016 21:48:25 +0100 Subject: [PATCH] fix group deletion not syncing across multiple instances --- .../lucko/luckperms/data/methods/FlatfileDatastore.java | 8 +++++++- .../me/lucko/luckperms/data/methods/SQLDatastore.java | 7 +++++-- .../main/java/me/lucko/luckperms/groups/GroupManager.java | 7 +++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/me/lucko/luckperms/data/methods/FlatfileDatastore.java b/common/src/main/java/me/lucko/luckperms/data/methods/FlatfileDatastore.java index 38157d495..3f816a447 100644 --- a/common/src/main/java/me/lucko/luckperms/data/methods/FlatfileDatastore.java +++ b/common/src/main/java/me/lucko/luckperms/data/methods/FlatfileDatastore.java @@ -11,6 +11,7 @@ import me.lucko.luckperms.users.User; import java.io.*; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; @SuppressWarnings({"ResultOfMethodCallIgnored", "UnnecessaryLocalVariable"}) public class FlatfileDatastore extends Datastore { @@ -40,6 +41,7 @@ public class FlatfileDatastore extends Datastore { jsonWriter = new JsonWriter(bufferedWriter); jsonWriter.setIndent(" "); success = writeOperation.onRun(jsonWriter); + jsonWriter.flush(); } catch (IOException e) { e.printStackTrace(); } finally { @@ -315,7 +317,11 @@ public class FlatfileDatastore extends Datastore { @Override public boolean loadAllGroups() { - List groups = Arrays.asList(groupsDir.list((dir, name1) -> name1.endsWith(".json"))); + List groups = Arrays.asList(groupsDir.list((dir, name1) -> name1.endsWith(".json"))) + .stream().map(s -> s.substring(0, s.length() - 5)) + .collect(Collectors.toList()); + + plugin.getGroupManager().unloadAll(); groups.forEach(this::loadGroup); return true; } diff --git a/common/src/main/java/me/lucko/luckperms/data/methods/SQLDatastore.java b/common/src/main/java/me/lucko/luckperms/data/methods/SQLDatastore.java index f808375f8..e0c6e415a 100644 --- a/common/src/main/java/me/lucko/luckperms/data/methods/SQLDatastore.java +++ b/common/src/main/java/me/lucko/luckperms/data/methods/SQLDatastore.java @@ -231,8 +231,11 @@ public abstract class SQLDatastore extends Datastore { return true; }); - GroupManager gm = plugin.getGroupManager(); - if (success) groups.forEach(gm::setGroup); + if (success) { + GroupManager gm = plugin.getGroupManager(); + gm.unloadAll(); + groups.forEach(gm::setGroup); + } return success; } diff --git a/common/src/main/java/me/lucko/luckperms/groups/GroupManager.java b/common/src/main/java/me/lucko/luckperms/groups/GroupManager.java index 07b7d228a..7afc150fc 100644 --- a/common/src/main/java/me/lucko/luckperms/groups/GroupManager.java +++ b/common/src/main/java/me/lucko/luckperms/groups/GroupManager.java @@ -69,6 +69,13 @@ public class GroupManager { } } + /** + * Unloads all groups from the manager + */ + public void unloadAll() { + groups.clear(); + } + /** * Load all groups from the datastore */