mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-04-27 08:59:45 +00:00
Add a lag check for permission system checks.
This doesn't include normal permission checks, since the overhead could be detrimental.
This commit is contained in:
parent
50a815bdb9
commit
4854961901
3 changed files with 53 additions and 13 deletions
|
@ -194,6 +194,8 @@ public interface ISettings extends IConf
|
||||||
|
|
||||||
long getEconomyLagWarning();
|
long getEconomyLagWarning();
|
||||||
|
|
||||||
|
long getPermissionsLagWarning();
|
||||||
|
|
||||||
void setEssentialsChatActive(boolean b);
|
void setEssentialsChatActive(boolean b);
|
||||||
|
|
||||||
long getMaxTempban();
|
long getMaxTempban();
|
||||||
|
|
|
@ -557,6 +557,7 @@ public class Settings implements net.ess3.api.ISettings
|
||||||
mailsPerMinute = _getMailsPerMinute();
|
mailsPerMinute = _getMailsPerMinute();
|
||||||
maxMoney = _getMaxMoney();
|
maxMoney = _getMaxMoney();
|
||||||
minMoney = _getMinMoney();
|
minMoney = _getMinMoney();
|
||||||
|
permissionsLagWarning = _getPermissionsLagWarning();
|
||||||
economyLagWarning = _getEconomyLagWarning();
|
economyLagWarning = _getEconomyLagWarning();
|
||||||
economyLog = _isEcoLogEnabled();
|
economyLog = _isEcoLogEnabled();
|
||||||
economyLogUpdate = _isEcoLogUpdateEnabled();
|
economyLogUpdate = _isEcoLogUpdateEnabled();
|
||||||
|
@ -1137,8 +1138,8 @@ public class Settings implements net.ess3.api.ISettings
|
||||||
|
|
||||||
private long _getEconomyLagWarning()
|
private long _getEconomyLagWarning()
|
||||||
{
|
{
|
||||||
// Default to 20ms
|
// Default to 25ms
|
||||||
final long value = (long)(config.getDouble("economy-lag-warning", 20.0) * 1000000);
|
final long value = (long)(config.getDouble("economy-lag-warning", 25.0) * 1000000);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1148,6 +1149,22 @@ public class Settings implements net.ess3.api.ISettings
|
||||||
return economyLagWarning;
|
return economyLagWarning;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #easteregg
|
||||||
|
private long permissionsLagWarning;
|
||||||
|
|
||||||
|
private long _getPermissionsLagWarning()
|
||||||
|
{
|
||||||
|
// Default to 25ms
|
||||||
|
final long value = (long)(config.getDouble("permissions-lag-warning", 25.0) * 1000000);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getPermissionsLagWarning()
|
||||||
|
{
|
||||||
|
return permissionsLagWarning;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getMaxTempban()
|
public long getMaxTempban()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.earth2me.essentials.perm;
|
package com.earth2me.essentials.perm;
|
||||||
|
|
||||||
|
import com.earth2me.essentials.Essentials;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
@ -13,46 +14,50 @@ public class PermissionsHandler implements IPermissionsHandler
|
||||||
{
|
{
|
||||||
private transient IPermissionsHandler handler = new NullPermissionsHandler();
|
private transient IPermissionsHandler handler = new NullPermissionsHandler();
|
||||||
private transient String defaultGroup = "default";
|
private transient String defaultGroup = "default";
|
||||||
private final transient Plugin plugin;
|
private final transient Essentials ess;
|
||||||
private static final Logger LOGGER = Logger.getLogger("Essentials");
|
private static final Logger LOGGER = Logger.getLogger("Essentials");
|
||||||
private transient boolean useSuperperms = false;
|
private transient boolean useSuperperms = false;
|
||||||
|
|
||||||
public PermissionsHandler(final Plugin plugin)
|
public PermissionsHandler(final Essentials plugin)
|
||||||
{
|
{
|
||||||
this.plugin = plugin;
|
this.ess = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PermissionsHandler(final Plugin plugin, final boolean useSuperperms)
|
public PermissionsHandler(final Essentials plugin, final boolean useSuperperms)
|
||||||
{
|
{
|
||||||
this.plugin = plugin;
|
this.ess = plugin;
|
||||||
this.useSuperperms = useSuperperms;
|
this.useSuperperms = useSuperperms;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PermissionsHandler(final Plugin plugin, final String defaultGroup)
|
public PermissionsHandler(final Essentials plugin, final String defaultGroup)
|
||||||
{
|
{
|
||||||
this.plugin = plugin;
|
this.ess = plugin;
|
||||||
this.defaultGroup = defaultGroup;
|
this.defaultGroup = defaultGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getGroup(final Player base)
|
public String getGroup(final Player base)
|
||||||
{
|
{
|
||||||
|
final long start = System.nanoTime();
|
||||||
String group = handler.getGroup(base);
|
String group = handler.getGroup(base);
|
||||||
if (group == null)
|
if (group == null)
|
||||||
{
|
{
|
||||||
group = defaultGroup;
|
group = defaultGroup;
|
||||||
}
|
}
|
||||||
|
checkPermLag(start);
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getGroups(final Player base)
|
public List<String> getGroups(final Player base)
|
||||||
{
|
{
|
||||||
|
final long start = System.nanoTime();
|
||||||
List<String> groups = handler.getGroups(base);
|
List<String> groups = handler.getGroups(base);
|
||||||
if (groups == null || groups.isEmpty())
|
if (groups == null || groups.isEmpty())
|
||||||
{
|
{
|
||||||
groups = Collections.singletonList(defaultGroup);
|
groups = Collections.singletonList(defaultGroup);
|
||||||
}
|
}
|
||||||
|
checkPermLag(start);
|
||||||
return Collections.unmodifiableList(groups);
|
return Collections.unmodifiableList(groups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +70,10 @@ public class PermissionsHandler implements IPermissionsHandler
|
||||||
@Override
|
@Override
|
||||||
public boolean inGroup(final Player base, final String group)
|
public boolean inGroup(final Player base, final String group)
|
||||||
{
|
{
|
||||||
return handler.inGroup(base, group);
|
final long start = System.nanoTime();
|
||||||
|
final boolean result = handler.inGroup(base, group);
|
||||||
|
checkPermLag(start);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -77,28 +85,32 @@ public class PermissionsHandler implements IPermissionsHandler
|
||||||
@Override
|
@Override
|
||||||
public String getPrefix(final Player base)
|
public String getPrefix(final Player base)
|
||||||
{
|
{
|
||||||
|
final long start = System.nanoTime();
|
||||||
String prefix = handler.getPrefix(base);
|
String prefix = handler.getPrefix(base);
|
||||||
if (prefix == null)
|
if (prefix == null)
|
||||||
{
|
{
|
||||||
prefix = "";
|
prefix = "";
|
||||||
}
|
}
|
||||||
|
checkPermLag(start);
|
||||||
return prefix;
|
return prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSuffix(final Player base)
|
public String getSuffix(final Player base)
|
||||||
{
|
{
|
||||||
|
final long start = System.nanoTime();
|
||||||
String suffix = handler.getSuffix(base);
|
String suffix = handler.getSuffix(base);
|
||||||
if (suffix == null)
|
if (suffix == null)
|
||||||
{
|
{
|
||||||
suffix = "";
|
suffix = "";
|
||||||
}
|
}
|
||||||
|
checkPermLag(start);
|
||||||
return suffix;
|
return suffix;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkPermissions()
|
public void checkPermissions()
|
||||||
{
|
{
|
||||||
final PluginManager pluginManager = plugin.getServer().getPluginManager();
|
final PluginManager pluginManager = ess.getServer().getPluginManager();
|
||||||
|
|
||||||
final Plugin permExPlugin = pluginManager.getPlugin("PermissionsEx");
|
final Plugin permExPlugin = pluginManager.getPlugin("PermissionsEx");
|
||||||
if (permExPlugin != null && permExPlugin.isEnabled())
|
if (permExPlugin != null && permExPlugin.isEnabled())
|
||||||
|
@ -172,7 +184,7 @@ public class PermissionsHandler implements IPermissionsHandler
|
||||||
if (!(handler instanceof ZPermissionsHandler))
|
if (!(handler instanceof ZPermissionsHandler))
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.INFO, "Essentials: Using zPermissions based permissions.");
|
LOGGER.log(Level.INFO, "Essentials: Using zPermissions based permissions.");
|
||||||
handler = new ZPermissionsHandler(plugin);
|
handler = new ZPermissionsHandler(ess);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -191,7 +203,7 @@ public class PermissionsHandler implements IPermissionsHandler
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.INFO, "Essentials: Using config file enhanced permissions.");
|
LOGGER.log(Level.INFO, "Essentials: Using config file enhanced permissions.");
|
||||||
LOGGER.log(Level.INFO, "Permissions listed in as player-commands will be given to all users.");
|
LOGGER.log(Level.INFO, "Permissions listed in as player-commands will be given to all users.");
|
||||||
handler = new ConfigPermissionsHandler(plugin);
|
handler = new ConfigPermissionsHandler(ess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -205,4 +217,13 @@ public class PermissionsHandler implements IPermissionsHandler
|
||||||
{
|
{
|
||||||
return handler.getClass().getSimpleName().replace("Handler", "");
|
return handler.getClass().getSimpleName().replace("Handler", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkPermLag(long start)
|
||||||
|
{
|
||||||
|
final long elapsed = System.nanoTime() - start;
|
||||||
|
if (elapsed > ess.getSettings().getPermissionsLagWarning())
|
||||||
|
{
|
||||||
|
ess.getLogger().log(Level.INFO, "Lag Notice - Slow Permissions System (" + getName() + ") Response - Request took over {0}ms!", elapsed / 1000000.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue