PermissionsEx

PermissionsEx

14M Downloads

Server thread locked.

azbh111 opened this issue ยท 5 comments

commented

public boolean isMatches(String expression, String permission)
{
try
{
Pattern permissionMatcher = (Pattern)this.patternCache.get(expression);
return permissionMatcher.matcher(permission).matches();
} catch (ExecutionException e) {
ErrorReport.handleError("While checking for regex match for " + permission + " against expression " + expression, e);
}return false;
}

[19:24:08] ------------------------------
[19:24:08] Current Thread: Server thread
[19:24:08] PID: 19 | Suspended: false | Native: false | State: RUNNABLE
[19:24:08] Thread is waiting on monitor(s):
[19:24:08] Locked on:guava10.com.google.common.cache.CustomConcurrentHashMap$ComputingValueReference.setComputedValue(CustomConcurrentHashMap.java:3448)
[19:24:08] Locked on:guava10.com.google.common.cache.CustomConcurrentHashMap$Segment.compute(CustomConcurrentHashMap.java:2322)
[19:24:08] Locked on:ru.tehkode.permissions.bukkit.regexperms.PermissiblePEX.permissionValue(PermissiblePEX.java:241)
[19:24:08] Locked on:org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492)
[19:24:08] Locked on:net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:181)
[19:24:08] Stack:
[19:24:08] java.lang.Object.notifyAll(Native Method)
[19:24:08] guava10.com.google.common.cache.CustomConcurrentHashMap$ComputingValueReference.setComputedValue(CustomConcurrentHashMap.java:3448)
[19:24:08] guava10.com.google.common.cache.CustomConcurrentHashMap$ComputingValueReference.compute(CustomConcurrentHashMap.java:3440)
[19:24:08] guava10.com.google.common.cache.CustomConcurrentHashMap$Segment.compute(CustomConcurrentHashMap.java:2322)
[19:24:08] guava10.com.google.common.cache.CustomConcurrentHashMap$Segment.getOrCompute(CustomConcurrentHashMap.java:2291)
[19:24:08] guava10.com.google.common.cache.CustomConcurrentHashMap.getOrCompute(CustomConcurrentHashMap.java:3802)
[19:24:08] guava10.com.google.common.cache.ComputingCache.get(ComputingCache.java:46)
[19:24:08] ru.tehkode.permissions.RegExpMatcher.isMatches(RegExpMatcher.java:27)
[19:24:08] ru.tehkode.permissions.bukkit.regexperms.PermissiblePEX.checkSingle(PermissiblePEX.java:213)
[19:24:08] ru.tehkode.permissions.bukkit.regexperms.PermissiblePEX.permissionValue(PermissiblePEX.java:241)
[19:24:08] ru.tehkode.permissions.bukkit.regexperms.PermissiblePEX.hasPermission(PermissiblePEX.java:127)
[19:24:08] org.bukkit.craftbukkit.v1_7_R4.entity.CraftHumanEntity.hasPermission(CraftHumanEntity.java:102)
[19:24:08] ru.tehkode.permissions.bukkit.regexperms.PEXPermissionSubscriptionMap$PEXSubscriptionValueMap.keySet(PEXPermissionSubscriptionMap.java:169)
[19:24:08] org.bukkit.plugin.SimplePluginManager.getPermissionSubscriptions(SimplePluginManager.java:683)
[19:24:08] org.bukkit.permissions.Permission.getPermissibles(Permission.java:152)
[19:24:08] org.bukkit.permissions.Permission.recalculatePermissibles(Permission.java:162)
[19:24:08] org.bukkit.permissions.Permission.(Permission.java:66)
[19:24:08] org.bukkit.permissions.Permission.(Permission.java:35)
[19:24:08] com.bekvon.bukkit.residence.protection.FlagPermissions.getPosibleFlags(FlagPermissions.java:691)
[19:24:08] com.bekvon.bukkit.residence.gui.SetFlag.recalculateResidence(SetFlag.java:150)
[19:24:08] com.bekvon.bukkit.residence.gui.SetFlag.recalculateInv(SetFlag.java:121)
[19:24:08] com.bekvon.bukkit.residence.listeners.ResidencePlayerListener.onFlagGuiClick(ResidencePlayerListener.java:397)
[19:24:08] sun.reflect.GeneratedMethodAccessor160.invoke(Unknown Source)
[19:24:08] sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[19:24:08] java.lang.reflect.Method.invoke(Unknown Source)
[19:24:08] org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334)
[19:24:08] org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
[19:24:08] org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507)
[19:24:08] org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492)
[19:24:08] net.minecraft.network.NetHandlerPlayServer.func_147351_a(NetHandlerPlayServer.java:2069)
[19:24:08] net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:32)
[19:24:08] net.minecraft.network.play.client.C0EPacketClickWindow.func_148833_a(SourceFile:10)
[19:24:08] net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245)
[19:24:08] net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:181)
[19:24:08] net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1023)
[19:24:08] net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432)
[19:24:08] net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841)
[19:24:08] net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693)
[19:24:08] java.lang.Thread.run(Unknown Source)
[19:24:08] ##------------------------------

commented

Which PEX version are you using?

commented

PEX:PermissionsEx-1.22.10
server:Thermos-1.7.10-1614-58-server

commented

What is Thermos? I've never heard of it before.

Generally there are no guarantees of thread-safety given to the superperms system, so concurrency support is mostly just luck.

commented

Thermos is the follow up of Cauldron or ForgeSpigot if you prefer.
Minecraft networking is multi-threaded, so how would superperms work without thread safety?

commented

Unfortunately PermissionsEx is currently unmaintained and no further updates are planned. Because of this, all pull requests are being closed. If you are looking for an actively maintained permissions plugin, take a look at LuckPerms. It is compatible with major server platforms and can import data from PEX.