From 190014cf96eabf34763f3db73cf2a6c9c6825e53 Mon Sep 17 00:00:00 2001 From: catbref Date: Sat, 16 Jan 2021 13:20:20 +0000 Subject: [PATCH] Fix minor NPE during shutdown --- src/main/java/org/hsqldb/jdbc/HSQLDBPool.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/hsqldb/jdbc/HSQLDBPool.java b/src/main/java/org/hsqldb/jdbc/HSQLDBPool.java index b7cdf653..0bf9d2ef 100644 --- a/src/main/java/org/hsqldb/jdbc/HSQLDBPool.java +++ b/src/main/java/org/hsqldb/jdbc/HSQLDBPool.java @@ -21,18 +21,28 @@ public class HSQLDBPool extends JDBCPool { public Connection tryConnection() throws SQLException { for (int i = 0; i < states.length(); i++) { if (states.compareAndSet(i, RefState.available, RefState.allocated)) { - return connections[i].getConnection(); + JDBCPooledConnection pooledConnection = connections[i]; + + if (pooledConnection == null) + // Probably shutdown situation + return null; + + return pooledConnection.getConnection(); } if (states.compareAndSet(i, RefState.empty, RefState.allocated)) { try { - JDBCPooledConnection connection = (JDBCPooledConnection) source.getPooledConnection(); + JDBCPooledConnection pooledConnection = (JDBCPooledConnection) source.getPooledConnection(); - connection.addConnectionEventListener(this); - connection.addStatementEventListener(this); - connections[i] = connection; + if (pooledConnection == null) + // Probably shutdown situation + return null; - return connections[i].getConnection(); + pooledConnection.addConnectionEventListener(this); + pooledConnection.addStatementEventListener(this); + connections[i] = pooledConnection; + + return pooledConnection.getConnection(); } catch (SQLException e) { states.set(i, RefState.empty); }