You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@phoenix.apache.org by "Hudson (JIRA)" <ji...@apache.org> on 2018/09/24 15:30:02 UTC
[jira] [Commented] (PHOENIX-4809) connectionQueue never cleared in
ConnectionQueryServicesImpl when lease renewal is disabled/unsupported
[ https://issues.apache.org/jira/browse/PHOENIX-4809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16625992#comment-16625992 ]
Hudson commented on PHOENIX-4809:
---------------------------------
FAILURE: Integrated in Jenkins build Phoenix-omid2 #89 (See [https://builds.apache.org/job/Phoenix-omid2/89/])
PHOENIX-4809 Only cache PhoenixConnections when lease renewal is on (elserj: rev b9fc468e5710b7cc47ee086c231f435014c04c7e)
* (edit) phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
* (add) phoenix-core/src/it/java/org/apache/phoenix/query/ConnectionCachingIT.java
> 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)