forked from LogBlock/LogBlock
Added timer in case the bukkit scheduler fails.
This commit is contained in:
@@ -5,13 +5,14 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.TimerTask;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class Consumer implements Runnable
|
public class Consumer extends TimerTask implements Runnable
|
||||||
{
|
{
|
||||||
private LinkedBlockingQueue<BlockRow> bqueue = new LinkedBlockingQueue<BlockRow>();
|
private LinkedBlockingQueue<BlockRow> bqueue = new LinkedBlockingQueue<BlockRow>();
|
||||||
private HashSet<Integer> hiddenplayers = new HashSet<Integer>();
|
private HashSet<Integer> hiddenplayers = new HashSet<Integer>();
|
||||||
|
@@ -7,6 +7,7 @@ import java.sql.Connection;
|
|||||||
import java.sql.DatabaseMetaData;
|
import java.sql.DatabaseMetaData;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
import java.util.Timer;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
@@ -54,6 +55,7 @@ public class LogBlock extends JavaPlugin
|
|||||||
public static Config config;
|
public static Config config;
|
||||||
public ConnectionPool pool;
|
public ConnectionPool pool;
|
||||||
private Consumer consumer = null;
|
private Consumer consumer = null;
|
||||||
|
private Timer timer = null;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@@ -123,13 +125,18 @@ public class LogBlock extends JavaPlugin
|
|||||||
consumer = new Consumer(this);
|
consumer = new Consumer(this);
|
||||||
if (getServer().getScheduler().scheduleAsyncRepeatingTask(this, consumer, config.delay * 20, config.delay * 20) > 0)
|
if (getServer().getScheduler().scheduleAsyncRepeatingTask(this, consumer, config.delay * 20, config.delay * 20) > 0)
|
||||||
log.info("[LogBlock] Started consumer");
|
log.info("[LogBlock] Started consumer");
|
||||||
else
|
else {
|
||||||
log.severe("[LogBlock] Failed to start consumer");
|
log.warning("[LogBlock] Failed to schedule consumer with bukkit scheduler. Now trying timer scheduler.");
|
||||||
|
timer = new Timer();
|
||||||
|
timer.scheduleAtFixedRate(consumer, config.delay*1000, config.delay*1000);
|
||||||
|
}
|
||||||
log.info("Logblock v" + getDescription().getVersion() + " enabled.");
|
log.info("Logblock v" + getDescription().getVersion() + " enabled.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
if (timer != null)
|
||||||
|
timer.cancel();
|
||||||
if (consumer != null && consumer.getQueueSize() > 0) {
|
if (consumer != null && consumer.getQueueSize() > 0) {
|
||||||
log.info("[LogBlock] Waiting for consumer ...");
|
log.info("[LogBlock] Waiting for consumer ...");
|
||||||
Thread thread = new Thread(consumer);
|
Thread thread = new Thread(consumer);
|
||||||
|
Reference in New Issue
Block a user