Module reload fix, Better Thread-Performance-Warning
This commit is contained in:
parent
4b345cf880
commit
9275b9b4a5
9 changed files with 23 additions and 27 deletions
|
@ -1,7 +1,5 @@
|
||||||
package de.jaschastarke.minecraft.limitedcreative;
|
package de.jaschastarke.minecraft.limitedcreative;
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
import de.jaschastarke.bukkit.lib.Core;
|
import de.jaschastarke.bukkit.lib.Core;
|
||||||
import de.jaschastarke.bukkit.lib.configuration.ConfigurationContainer;
|
import de.jaschastarke.bukkit.lib.configuration.ConfigurationContainer;
|
||||||
import de.jaschastarke.bukkit.lib.configuration.PluginConfiguration;
|
import de.jaschastarke.bukkit.lib.configuration.PluginConfiguration;
|
||||||
|
@ -31,25 +29,13 @@ public class Config extends PluginConfiguration {
|
||||||
super(plugin);
|
super(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setValues(ConfigurationSection sect) {
|
|
||||||
super.setValues(sect);
|
|
||||||
|
|
||||||
if (plugin.getModules().count() > 0)
|
|
||||||
setModuleStates();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setModuleStates() {
|
|
||||||
ModuleEntry<IModule> metricsEntry = plugin.getModule(FeatureMetrics.class).getModuleEntry();
|
|
||||||
metricsEntry.setEnabled(getMetrics());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValue(IConfigurationNode node, Object pValue) throws InvalidValueException {
|
public void setValue(IConfigurationNode node, Object pValue) throws InvalidValueException {
|
||||||
super.setValue(node, pValue);
|
super.setValue(node, pValue);
|
||||||
|
|
||||||
if (node.getName().equals("metrics")) {
|
if (node.getName().equals("metrics")) {
|
||||||
setModuleStates();
|
ModuleEntry<IModule> metricsEntry = plugin.getModule(FeatureMetrics.class).getModuleEntry();
|
||||||
|
metricsEntry.setEnabled(getMetrics());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,11 +35,10 @@ public class LimitedCreative extends Core {
|
||||||
addModule(new ModCmdBlocker(this));
|
addModule(new ModCmdBlocker(this));
|
||||||
addModule(new ModGameModePerm(this));
|
addModule(new ModGameModePerm(this));
|
||||||
addModule(new ModBlockStates(this));
|
addModule(new ModBlockStates(this));
|
||||||
addModule(new FeatureMetrics(this));
|
addModule(new FeatureMetrics(this)).setDefaultEnabled(config.getMetrics());
|
||||||
|
|
||||||
listeners.addListener(new DependencyListener(this));
|
listeners.addListener(new DependencyListener(this));
|
||||||
|
|
||||||
config.setModuleStates();
|
|
||||||
config.saveDefault();
|
config.saveDefault();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class BlockStateConfig extends Configuration implements IConfigurationSub
|
||||||
@Override
|
@Override
|
||||||
public void setValues(ConfigurationSection sect) {
|
public void setValues(ConfigurationSection sect) {
|
||||||
super.setValues(sect);
|
super.setValues(sect);
|
||||||
entry.setEnabled(getEnabled());
|
entry.setDefaultEnabled(getEnabled());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -19,9 +19,11 @@ import de.jaschastarke.minecraft.limitedcreative.blockstate.ThreadedModel;
|
||||||
|
|
||||||
public class ThreadLink {
|
public class ThreadLink {
|
||||||
private static final int BATCH_ACTION_LENGTH = 10;
|
private static final int BATCH_ACTION_LENGTH = 10;
|
||||||
private static final int QUEUE_ACCESS_WARNING_DURATION = 5;
|
private static final int QUEUE_ACCESS_WARNING_DURATION = 5; // ms
|
||||||
private static final int COUNT_WARNING_QUEUE = 5;
|
private static final int COUNT_WARNING_QUEUE = 5;
|
||||||
private static final int COUNT_ERROR_QUEUE = 20;
|
private static final int COUNT_ERROR_QUEUE = 20;
|
||||||
|
private static final int QUEUE_TIMING_DURATION = 500; // ms
|
||||||
|
private long lastTimeout;
|
||||||
private Stack<Action> updateQueue = new Stack<Action>();
|
private Stack<Action> updateQueue = new Stack<Action>();
|
||||||
|
|
||||||
private boolean shutdown = false;
|
private boolean shutdown = false;
|
||||||
|
@ -56,6 +58,7 @@ public class ThreadLink {
|
||||||
public void run() {
|
public void run() {
|
||||||
if (getModule().isDebug())
|
if (getModule().isDebug())
|
||||||
log.debug("DB-Thread '" + Thread.currentThread().getName() + "' started.");
|
log.debug("DB-Thread '" + Thread.currentThread().getName() + "' started.");
|
||||||
|
lastTimeout = System.currentTimeMillis();
|
||||||
while (!shutdown || !updateQueue.isEmpty()) {
|
while (!shutdown || !updateQueue.isEmpty()) {
|
||||||
try {
|
try {
|
||||||
List<Action> acts = new LinkedList<Action>();
|
List<Action> acts = new LinkedList<Action>();
|
||||||
|
@ -63,9 +66,17 @@ public class ThreadLink {
|
||||||
while (updateQueue.isEmpty() && !shutdown)
|
while (updateQueue.isEmpty() && !shutdown)
|
||||||
updateQueue.wait();
|
updateQueue.wait();
|
||||||
if (updateQueue.size() > (BATCH_ACTION_LENGTH * COUNT_ERROR_QUEUE)) {
|
if (updateQueue.size() > (BATCH_ACTION_LENGTH * COUNT_ERROR_QUEUE)) {
|
||||||
getLog().severe("Extrem large DB-Queue in " + Thread.currentThread().getName() + ": " + updateQueue.size());
|
if (System.currentTimeMillis() - lastTimeout > QUEUE_TIMING_DURATION) {
|
||||||
|
getLog().warn("Extrem large DB-Queue in " + Thread.currentThread().getName() + ": " + updateQueue.size());
|
||||||
|
lastTimeout = System.currentTimeMillis();
|
||||||
|
}
|
||||||
} else if (updateQueue.size() > (BATCH_ACTION_LENGTH * COUNT_WARNING_QUEUE)) {
|
} else if (updateQueue.size() > (BATCH_ACTION_LENGTH * COUNT_WARNING_QUEUE)) {
|
||||||
getLog().warn("Large DB-Queue in " + Thread.currentThread().getName() + ": " + updateQueue.size());
|
if (System.currentTimeMillis() - lastTimeout > QUEUE_TIMING_DURATION) {
|
||||||
|
getLog().info("Large DB-Queue in " + Thread.currentThread().getName() + ": " + updateQueue.size());
|
||||||
|
lastTimeout = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
} else if (updateQueue.size() <= BATCH_ACTION_LENGTH) {
|
||||||
|
lastTimeout = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
for (int i = 0; i < BATCH_ACTION_LENGTH && !updateQueue.isEmpty(); i++) {
|
for (int i = 0; i < BATCH_ACTION_LENGTH && !updateQueue.isEmpty(); i++) {
|
||||||
acts.add(updateQueue.pop());
|
acts.add(updateQueue.pop());
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class CmdBlockerConfig extends Configuration implements IConfigurationSub
|
||||||
@Override
|
@Override
|
||||||
public void setValues(ConfigurationSection sect) {
|
public void setValues(ConfigurationSection sect) {
|
||||||
super.setValues(sect);
|
super.setValues(sect);
|
||||||
entry.setEnabled(getEnabled());
|
entry.setDefaultEnabled(getEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class GMPermConfig extends Configuration implements IConfigurationSubGrou
|
||||||
@Override
|
@Override
|
||||||
public void setValues(ConfigurationSection sect) {
|
public void setValues(ConfigurationSection sect) {
|
||||||
super.setValues(sect);
|
super.setValues(sect);
|
||||||
entry.setEnabled(getEnabled());
|
entry.setDefaultEnabled(getEnabled());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class InventoryConfig extends Configuration implements IConfigurationSubG
|
||||||
}
|
}
|
||||||
|
|
||||||
super.setValues(sect);
|
super.setValues(sect);
|
||||||
entry.setEnabled(getEnabled());
|
entry.setDefaultEnabled(getEnabled());
|
||||||
|
|
||||||
// Config Upgrade
|
// Config Upgrade
|
||||||
if (!sect.contains("storeCreative") && sect.contains("creative"))
|
if (!sect.contains("storeCreative") && sect.contains("creative"))
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class LimitConfig extends Configuration implements IConfigurationSubGroup
|
||||||
@Override
|
@Override
|
||||||
public void setValues(ConfigurationSection sect) {
|
public void setValues(ConfigurationSection sect) {
|
||||||
super.setValues(sect);
|
super.setValues(sect);
|
||||||
entry.setEnabled(getEnabled());
|
entry.setDefaultEnabled(getEnabled());
|
||||||
|
|
||||||
// Config Upgrade
|
// Config Upgrade
|
||||||
if (!sect.contains("interact") && sect.contains("sign")) {
|
if (!sect.contains("interact") && sect.contains("sign")) {
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class RegionConfig extends Configuration implements IConfigurationSubGrou
|
||||||
@Override
|
@Override
|
||||||
public void setValues(ConfigurationSection sect) {
|
public void setValues(ConfigurationSection sect) {
|
||||||
super.setValues(sect);
|
super.setValues(sect);
|
||||||
entry.setEnabled(getEnabled());
|
entry.setDefaultEnabled(getEnabled());
|
||||||
|
|
||||||
// Config Upgrade
|
// Config Upgrade
|
||||||
if (!sect.contains("rememberOptional") && sect.contains("remember"))
|
if (!sect.contains("rememberOptional") && sect.contains("remember"))
|
||||||
|
|
Loading…
Reference in a new issue