diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java index 0a7c42477e2..cf50fa44c77 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java @@ -2083,7 +2083,8 @@ private void removeIdleSessions(Instant currTime) { Iterator iterator = sessions.descendingIterator(); while (iterator.hasNext()) { PooledSession session = iterator.next(); - if (session.delegate.getLastUseTime().isBefore(minLastUseTime)) { + if (session.delegate.getLastUseTime() != null + && session.delegate.getLastUseTime().isBefore(minLastUseTime)) { if (session.state != SessionState.CLOSING) { boolean isRemoved = removeFromPool(session); if (isRemoved) { @@ -2676,7 +2677,8 @@ private Tuple findSessionToKeepAlive( && (numChecked + numAlreadyChecked) < (options.getMinSessions() + options.getMaxIdleSessions() - numSessionsInUse)) { PooledSession session = iterator.next(); - if (session.delegate.getLastUseTime().isBefore(keepAliveThreshold)) { + if (session.delegate.getLastUseTime() != null + && session.delegate.getLastUseTime().isBefore(keepAliveThreshold)) { iterator.remove(); return Tuple.of(session, numChecked); }