[ https://issues.apache.org/jira/browse/PHOENIX-4809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Josh Elser updated PHOENIX-4809: -------------------------------- Attachment: PHOENIX-4809.001.patch > connectionQueue never cleared in ConnectionQueryServicesImpl when lease > renewal is disabled/unsupported > ------------------------------------------------------------------------------------------------------- > > Key: PHOENIX-4809 > URL: https://issues.apache.org/jira/browse/PHOENIX-4809 > Project: Phoenix > Issue Type: Bug > Reporter: Josh Elser > Assignee: Josh Elser > Priority: Major > Fix For: 4.15.0, 5.1.0 > > Attachments: PHOENIX-4809.001.patch > > > 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)