Ensure caches are invalidated when Bukkit/Nukkit's Permission#getChildren map is modified (#1378)
This commit is contained in:
@@ -130,6 +130,9 @@ public class PermissionCalculator implements Function<String, Tristate> {
|
||||
}
|
||||
|
||||
public void invalidateCache() {
|
||||
for (PermissionProcessor processor : this.processors) {
|
||||
processor.invalidate();
|
||||
}
|
||||
this.lookupCache.clear();
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -62,4 +62,11 @@ public interface PermissionProcessor {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Called after the parent calculator has been invalidated
|
||||
*/
|
||||
default void invalidate() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+5
@@ -69,4 +69,9 @@ public abstract class AbstractGroupManager<T extends Group> extends AbstractMana
|
||||
public void invalidateAllGroupCaches() {
|
||||
getAll().values().forEach(PermissionHolder::invalidateCachedData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidateAllPermissionCalculators() {
|
||||
getAll().values().forEach(p -> p.getCachedData().invalidatePermissionCalculators());
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.model.manager.group;
|
||||
|
||||
import me.lucko.luckperms.common.calculator.PermissionCalculator;
|
||||
import me.lucko.luckperms.common.model.Group;
|
||||
import me.lucko.luckperms.common.model.manager.Manager;
|
||||
|
||||
@@ -43,4 +44,9 @@ public interface GroupManager<T extends Group> extends Manager<String, Group, T>
|
||||
*/
|
||||
void invalidateAllGroupCaches();
|
||||
|
||||
/**
|
||||
* Invalidates the {@link PermissionCalculator}s for *loaded* groups.
|
||||
*/
|
||||
void invalidateAllPermissionCalculators();
|
||||
|
||||
}
|
||||
|
||||
+5
@@ -162,6 +162,11 @@ public abstract class AbstractUserManager<T extends User> extends AbstractManage
|
||||
getAll().values().forEach(PermissionHolder::invalidateCachedData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidateAllPermissionCalculators() {
|
||||
getAll().values().forEach(p -> p.getCachedData().invalidatePermissionCalculators());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the user's state indicates that they should be persisted to storage.
|
||||
*
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.model.manager.user;
|
||||
|
||||
import me.lucko.luckperms.common.calculator.PermissionCalculator;
|
||||
import me.lucko.luckperms.common.model.User;
|
||||
import me.lucko.luckperms.common.model.UserIdentifier;
|
||||
import me.lucko.luckperms.common.model.manager.Manager;
|
||||
@@ -89,4 +90,9 @@ public interface UserManager<T extends User> extends Manager<UserIdentifier, Use
|
||||
*/
|
||||
void invalidateAllUserCaches();
|
||||
|
||||
/**
|
||||
* Invalidates the {@link PermissionCalculator}s for *loaded* users.
|
||||
*/
|
||||
void invalidateAllPermissionCalculators();
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user