[
https://issues.apache.org/jira/browse/PHOENIX-1143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14088084#comment-14088084
]
Samarth Jain commented on PHOENIX-1143:
---------------------------------------
That won't be ideal when the caller already has a PhoenixConnection (so it
doesn't need to go to driver).
Consider this scenario:
Thread 1 - has a phoenix connection. It does some operation that uses metadata
like connection.removeColumn().
Thread 2 - concurrently closes the connection query services and ends up
setting metadata to null.
Then thread 1 will end up getting an NPE depending on who wins the race.
> Prevent race condition between creating phoenix connection and closing
> phoenix driver/connection query services.
> ----------------------------------------------------------------------------------------------------------------
>
> Key: PHOENIX-1143
> URL: https://issues.apache.org/jira/browse/PHOENIX-1143
> Project: Phoenix
> Issue Type: Bug
> Reporter: Samarth Jain
> Assignee: Samarth Jain
> Fix For: 5.0.0, 3.1, 4.1
>
> Attachments: PHOENIX-1143-3.0.patch
>
>
> The race condition manifests when the following NPE is thrown:
> {code}
> java.lang.NullPointerException
> Thrown-StackTrace: at
> org.apache.phoenix.jdbc.PhoenixConnection.<init>(PhoenixConnection.java:178)
> at
> org.apache.phoenix.query.ConnectionQueryServicesImpl.connect(ConnectionQueryServicesImpl.java:513)
> at
> org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.connect(PhoenixEmbeddedDriver.java:116)
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)