Asynced getConnection() where possible

This commit is contained in:
Robin Kupper
2011-07-08 13:22:54 +02:00
parent 6e00083785
commit 4cc4f87fbd
2 changed files with 25 additions and 15 deletions

View File

@@ -360,19 +360,17 @@ public class CommandsHandler implements CommandExecutor
return true; return true;
} }
public abstract class LBCommand implements Runnable, Closeable public abstract class AbstractCommand implements Runnable, Closeable
{ {
protected final CommandSender sender; protected CommandSender sender;
protected final QueryParams params; protected QueryParams params;
protected Connection conn = null; protected Connection conn = null;
protected Statement state = null; protected Statement state = null;
protected ResultSet rs = null; protected ResultSet rs = null;
protected LBCommand(CommandSender sender, QueryParams params, boolean async) throws Exception { protected AbstractCommand(CommandSender sender, QueryParams params, boolean async) throws Exception {
this.sender = sender; this.sender = sender;
this.params = params; this.params = params;
conn = logblock.getConnection();
state = conn.createStatement();
if (async) { if (async) {
if (scheduler.scheduleAsyncDelayedTask(logblock, this) == -1) if (scheduler.scheduleAsyncDelayedTask(logblock, this) == -1)
throw new Exception("Failed to schedule the command"); throw new Exception("Failed to schedule the command");
@@ -395,7 +393,7 @@ public class CommandsHandler implements CommandExecutor
} }
} }
public class CommandLookup extends LBCommand public class CommandLookup extends AbstractCommand
{ {
public CommandLookup(CommandSender sender, QueryParams params, boolean async) throws Exception { public CommandLookup(CommandSender sender, QueryParams params, boolean async) throws Exception {
super(sender, params, async); super(sender, params, async);
@@ -404,6 +402,8 @@ public class CommandsHandler implements CommandExecutor
@Override @Override
public void run() { public void run() {
try { try {
conn = logblock.getConnection();
state = conn.createStatement();
if (params.limit == 15 && params.sum == SummarizationMode.NONE) if (params.limit == 15 && params.sum == SummarizationMode.NONE)
params.limit = config.linesLimit; params.limit = config.linesLimit;
rs = state.executeQuery(params.getLookupQuery()); rs = state.executeQuery(params.getLookupQuery());
@@ -438,7 +438,7 @@ public class CommandsHandler implements CommandExecutor
} }
} }
public class CommandWriteLogFile extends LBCommand public class CommandWriteLogFile extends AbstractCommand
{ {
CommandWriteLogFile(CommandSender sender, QueryParams params, boolean async) throws Exception { CommandWriteLogFile(CommandSender sender, QueryParams params, boolean async) throws Exception {
super(sender, params, async); super(sender, params, async);
@@ -448,6 +448,8 @@ public class CommandsHandler implements CommandExecutor
public void run() { public void run() {
File file = null; File file = null;
try { try {
conn = logblock.getConnection();
state = conn.createStatement();
file = new File("plugins/LogBlock/log/" + params.getTitle().replace(":", ".") + ".log"); file = new File("plugins/LogBlock/log/" + params.getTitle().replace(":", ".") + ".log");
sender.sendMessage(ChatColor.GREEN + "Creating " + file.getName()); sender.sendMessage(ChatColor.GREEN + "Creating " + file.getName());
rs = state.executeQuery(params.getLookupQuery()); rs = state.executeQuery(params.getLookupQuery());
@@ -473,7 +475,7 @@ public class CommandsHandler implements CommandExecutor
} }
} }
public class CommandSaveQueue extends LBCommand public class CommandSaveQueue extends AbstractCommand
{ {
public CommandSaveQueue(CommandSender sender, QueryParams params, boolean async) throws Exception { public CommandSaveQueue(CommandSender sender, QueryParams params, boolean async) throws Exception {
super(sender, params, async); super(sender, params, async);
@@ -491,7 +493,7 @@ public class CommandsHandler implements CommandExecutor
} }
} }
public class CommandTeleport extends LBCommand public class CommandTeleport extends AbstractCommand
{ {
public CommandTeleport(CommandSender sender, QueryParams params, boolean async) throws Exception { public CommandTeleport(CommandSender sender, QueryParams params, boolean async) throws Exception {
super(sender, params, async); super(sender, params, async);
@@ -500,6 +502,8 @@ public class CommandsHandler implements CommandExecutor
@Override @Override
public void run() { public void run() {
try { try {
conn = logblock.getConnection();
state = conn.createStatement();
rs = state.executeQuery("SELECT x, y, z FROM `" + params.getTable() + "` INNER JOIN `lb-players` USING (playerid) " + params.getWhere() + params.getOrderBy() + " LIMIT 1"); rs = state.executeQuery("SELECT x, y, z FROM `" + params.getTable() + "` INNER JOIN `lb-players` USING (playerid) " + params.getWhere() + params.getOrderBy() + " LIMIT 1");
if (rs.next()) { if (rs.next()) {
final Player player = (Player)sender; final Player player = (Player)sender;
@@ -510,7 +514,7 @@ public class CommandsHandler implements CommandExecutor
player.teleport(loc); player.teleport(loc);
sender.sendMessage(ChatColor.GREEN + "You were teleported " + Math.abs(y2 - y) + " blocks " + (y2 - y > 0 ? "above" : "below")); sender.sendMessage(ChatColor.GREEN + "You were teleported " + Math.abs(y2 - y) + " blocks " + (y2 - y > 0 ? "above" : "below"));
} else } else
sender.sendMessage(ChatColor.RED + "No blockchange found to teleport to"); sender.sendMessage(ChatColor.RED + "No block change found to teleport to");
} catch (final Exception ex) { } catch (final Exception ex) {
sender.sendMessage(ChatColor.RED + "Exception, check error log"); sender.sendMessage(ChatColor.RED + "Exception, check error log");
log.log(Level.SEVERE, "[LogBlock Teleport] Exception: ", ex); log.log(Level.SEVERE, "[LogBlock Teleport] Exception: ", ex);
@@ -520,7 +524,7 @@ public class CommandsHandler implements CommandExecutor
} }
} }
public class CommandRollback extends LBCommand public class CommandRollback extends AbstractCommand
{ {
public CommandRollback(CommandSender sender, QueryParams params, boolean async) throws Exception { public CommandRollback(CommandSender sender, QueryParams params, boolean async) throws Exception {
super(sender, params, async); super(sender, params, async);
@@ -529,6 +533,8 @@ public class CommandsHandler implements CommandExecutor
@Override @Override
public void run() { public void run() {
try { try {
conn = logblock.getConnection();
state = conn.createStatement();
if (!checkRestrictions(sender, params)) if (!checkRestrictions(sender, params))
return; return;
if (logblock.getConsumer().getQueueSize() > 50) if (logblock.getConsumer().getQueueSize() > 50)
@@ -566,7 +572,7 @@ public class CommandsHandler implements CommandExecutor
} }
} }
public class CommandRedo extends LBCommand public class CommandRedo extends AbstractCommand
{ {
public CommandRedo(CommandSender sender, QueryParams params, boolean async) throws Exception { public CommandRedo(CommandSender sender, QueryParams params, boolean async) throws Exception {
super(sender, params, async); super(sender, params, async);
@@ -575,6 +581,8 @@ public class CommandsHandler implements CommandExecutor
@Override @Override
public void run() { public void run() {
try { try {
conn = logblock.getConnection();
state = conn.createStatement();
if (!checkRestrictions(sender, params)) if (!checkRestrictions(sender, params))
return; return;
rs = state.executeQuery(params.getRollbackQuery()); rs = state.executeQuery(params.getRollbackQuery());
@@ -607,7 +615,7 @@ public class CommandsHandler implements CommandExecutor
} }
} }
public class CommandClearLog extends LBCommand public class CommandClearLog extends AbstractCommand
{ {
public CommandClearLog(CommandSender sender, QueryParams params, boolean async) throws Exception { public CommandClearLog(CommandSender sender, QueryParams params, boolean async) throws Exception {
super(sender, params, async); super(sender, params, async);
@@ -616,6 +624,8 @@ public class CommandsHandler implements CommandExecutor
@Override @Override
public void run() { public void run() {
try { try {
conn = logblock.getConnection();
state = conn.createStatement();
if (!checkRestrictions(sender, params)) if (!checkRestrictions(sender, params))
return; return;
final File dumpFolder = new File(logblock.getDataFolder(), "dumb"); final File dumpFolder = new File(logblock.getDataFolder(), "dumb");

View File

@@ -58,7 +58,7 @@ public class MySQLConnectionPool implements Closeable
} }
public Connection getConnection() throws SQLException, InterruptedException, TimeoutException { public Connection getConnection() throws SQLException, InterruptedException, TimeoutException {
if (!lock.tryLock(1000, TimeUnit.MILLISECONDS)) if (!lock.tryLock(3000, TimeUnit.MILLISECONDS))
throw new TimeoutException(); throw new TimeoutException();
try { try {
JDCConnection conn; JDCConnection conn;