Josh Elser created PHOENIX-4809: ----------------------------------- Summary: connectionQueue never cleared in ConnectionQueryServicesImpl Key: PHOENIX-4809 URL: https://issues.apache.org/jira/browse/PHOENIX-4809 Project: Phoenix Issue Type: Bug Reporter: Josh Elser Assignee: Josh Elser Fix For: 4.15.0, 5.1.0
When we create a new {{PhoenixConnection}}, we update {{connectionQueues}} in CQSI: {code:java} @Override public void addConnection(PhoenixConnection connection) throws SQLException { connectionQueues.get(getQueueIndex(connection)).add(new WeakReference<PhoenixConnection>(connection)); if (returnSequenceValues) { synchronized (connectionCountLock) { connectionCount++; } } }{code} We use connectionQueues to determine what needs lease renewal done. However, when the user closes a connection, this datastructure is never cleaned up. {code:java} @Override public void removeConnection(PhoenixConnection connection) throws SQLException { if (returnSequenceValues) { ConcurrentMap<SequenceKey,Sequence> formerSequenceMap = null; synchronized (connectionCountLock) { if (--connectionCount <= 0) { if (!this.sequenceMap.isEmpty()) { formerSequenceMap = this.sequenceMap; this.sequenceMap = Maps.newConcurrentMap(); } } if (connectionCount < 0) { connectionCount = 0; } } // Since we're using the former sequenceMap, we can do this outside // the lock. if (formerSequenceMap != null) { // When there are no more connections, attempt to return any sequences returnAllSequences(formerSequenceMap); } } else if (shouldThrottleNumConnections){ //still need to decrement connection count synchronized (connectionCountLock) { if (connectionCount > 0) { --connectionCount; } } } }{code} Running a test now, but seems to be the case on master. -- This message was sent by Atlassian JIRA (v7.6.3#76005)