From d805965981d6b844479d7ca283308f3c5a793e75 Mon Sep 17 00:00:00 2001 From: Robin Kupper Date: Tue, 5 Apr 2011 00:48:53 +0200 Subject: [PATCH] Catched nullpointer at consumer. --- src/de/diddiz/LogBlock/ClearLog.java | 4 ++-- src/de/diddiz/LogBlock/Consumer.java | 17 +++++++++++------ src/de/diddiz/LogBlock/LogBlock.java | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/de/diddiz/LogBlock/ClearLog.java b/src/de/diddiz/LogBlock/ClearLog.java index 2bf9afc..c28da3b 100644 --- a/src/de/diddiz/LogBlock/ClearLog.java +++ b/src/de/diddiz/LogBlock/ClearLog.java @@ -8,11 +8,11 @@ import java.util.logging.Level; public class ClearLog implements Runnable { private Connection conn; - + public ClearLog(Connection conn) { this.conn = conn; } - + @Override public void run() { if (conn == null) diff --git a/src/de/diddiz/LogBlock/Consumer.java b/src/de/diddiz/LogBlock/Consumer.java index 838bc7a..7759d04 100644 --- a/src/de/diddiz/LogBlock/Consumer.java +++ b/src/de/diddiz/LogBlock/Consumer.java @@ -14,6 +14,7 @@ import org.bukkit.entity.Player; public class Consumer implements Runnable { private LinkedBlockingQueue bqueue = new LinkedBlockingQueue(); + private Connection conn = null; public void queueBlock(Player player, Block block, int typeAfter) { queueBlock(player.getName(), block, 0, typeAfter, (byte)0, null, null); @@ -47,20 +48,26 @@ public class Consumer implements Runnable public int getQueueSize() { return bqueue.size(); } - + public void run() { - Connection conn = null; + if (conn == null) + try { + conn = DriverManager.getConnection("jdbc:jdc:jdcpool"); + } catch (SQLException ex) { + LogBlock.log.severe("[LogBlock Consumer] Can't get a connection"); + } + if (conn == null) + return; Statement state = null; BlockRow b; int count = 0; if (bqueue.size() > 100) LogBlock.log.info("[LogBlock Consumer] Queue overloaded. Size: " + bqueue.size()); try { - conn = DriverManager.getConnection("jdbc:jdc:jdcpool"); conn.setAutoCommit(false); state = conn.createStatement(); long start = System.currentTimeMillis(); - while (count < 1000 && !bqueue.isEmpty() && System.currentTimeMillis() - start < 100) { + while (count < 1000 && !bqueue.isEmpty() && (System.currentTimeMillis() - start < 100 || count < 100)) { b = bqueue.poll(); if (b == null) continue; @@ -83,8 +90,6 @@ public class Consumer implements Runnable try { if (state != null) state.close(); - if (conn != null) - conn.close(); } catch (SQLException ex) { LogBlock.log.log(Level.SEVERE, "[LogBlock Consumer] SQL exception on close", ex); } diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index 58acf75..b48444e 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -342,7 +342,7 @@ public class LogBlock extends JavaPlugin try { return DriverManager.getConnection("jdbc:jdc:jdcpool"); } catch (SQLException ex) { - log.log(Level.SEVERE, "[LogBlock] SQL exception", ex); + log.log(Level.SEVERE, "[LogBlock] Can't get a connection", ex); return null; } }