Skip to content

Commit db83c46

Browse files
committed
Fix potential issue with toggling setting mid-permission check
1 parent f5bb781 commit db83c46

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

cloud-core/src/main/java/org/incendo/cloud/CommandManager.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -410,13 +410,14 @@ public boolean hasCapability(final @NonNull CloudCapability capability) {
410410
final @NonNull C sender,
411411
final @NonNull Permission permission
412412
) {
413+
final boolean cache = this.settings.get(ManagerSetting.REDUCE_REDUNDANT_PERMISSION_CHECKS);
413414
try {
414-
if (this.settings.get(ManagerSetting.REDUCE_REDUNDANT_PERMISSION_CHECKS)) {
415+
if (cache) {
415416
this.threadLocalPermissionCache.get().second().incrementAndGet();
416417
}
417418
return this.testPermission_(sender, permission);
418419
} finally {
419-
if (this.settings.get(ManagerSetting.REDUCE_REDUNDANT_PERMISSION_CHECKS)) {
420+
if (cache) {
420421
final Pair<Map<Pair<C, Permission>, PermissionResult>, AtomicInteger> pair = this.threadLocalPermissionCache.get();
421422
if (pair.second().getAndDecrement() == 1) {
422423
pair.first().clear();

0 commit comments

Comments
 (0)