[ 
https://issues.apache.org/jira/browse/PHOENIX-6548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17425837#comment-17425837
 ] 

ASF GitHub Bot commented on PHOENIX-6548:
-----------------------------------------

gokceni commented on a change in pull request #1328:
URL: https://github.com/apache/phoenix/pull/1328#discussion_r723747526



##########
File path: phoenix-core/src/main/java/org/apache/phoenix/util/ServerUtil.java
##########
@@ -308,13 +308,22 @@ public static HTableFactory 
getDelegateHTableFactory(CoprocessorEnvironment env,
             this.connectionType = connectionType;
         }
 
-        private ClusterConnection getConnection() throws IOException {
+        public ClusterConnection getConnection() throws IOException {
             return ConnectionFactory.getConnection(connectionType, conf, 
server);
         }
 
         @Override
         public HTableInterface getTable(ImmutableBytesPtr tablename) throws 
IOException {
-            return getConnection().getTable(tablename.copyBytesIfNecessary());
+            ClusterConnection connection = null;
+            try {
+                connection = getConnection();
+                return connection.getTable(tablename.copyBytesIfNecessary());

Review comment:
       Should you do a null check here? Can connection be null?

##########
File path: phoenix-core/src/main/java/org/apache/phoenix/util/ServerUtil.java
##########
@@ -308,13 +308,22 @@ public static HTableFactory 
getDelegateHTableFactory(CoprocessorEnvironment env,
             this.connectionType = connectionType;
         }
 
-        private ClusterConnection getConnection() throws IOException {
+        public ClusterConnection getConnection() throws IOException {
             return ConnectionFactory.getConnection(connectionType, conf, 
server);
         }
 
         @Override
         public HTableInterface getTable(ImmutableBytesPtr tablename) throws 
IOException {
-            return getConnection().getTable(tablename.copyBytesIfNecessary());
+            ClusterConnection connection = null;
+            try {
+                connection = getConnection();
+                return connection.getTable(tablename.copyBytesIfNecessary());

Review comment:
       Should you do a null check here? Can connection be null? If yes then 
IllegalArgumentException will not be thrown

##########
File path: phoenix-core/src/main/java/org/apache/phoenix/util/ServerUtil.java
##########
@@ -328,7 +337,16 @@ public void shutdown() {
         @Override
         public HTableInterface getTable(ImmutableBytesPtr tablename, 
ExecutorService pool)
                 throws IOException {
-            return getConnection().getTable(tablename.copyBytesIfNecessary(), 
pool);
+            ClusterConnection connection = null;
+            try {
+                connection = getConnection();
+                return connection.getTable(tablename.copyBytesIfNecessary(), 
pool);
+            }catch (IllegalArgumentException e) {

Review comment:
       ditto




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


> Race condition when triggering index rebuilds as regionserver closes
> --------------------------------------------------------------------
>
>                 Key: PHOENIX-6548
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-6548
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.14.3, 4.16.1
>            Reporter: Geoffrey Jacoby
>            Assignee: Ankit Jain
>            Priority: Minor
>
> On each regionserver our coprocs keep a cache of HConnections with custom 
> settings (such as short timeouts) for talking to other regionservers. They're 
> used when coprocs need to make RPCs, such as during index rebuilds. 
> When a regionserver is closed, these HConnections are closed as well. 
> However, we've seen in our test pipelines a race condition where we may have 
> just given out one of the HConnections to a coprocessor, only to have the 
> connection closed just before it's used. 
> This will produce an IllegalArgumentException from the HBase Table object, 
> which (if the index rebuild was caused by a client Scan) will be thrown back 
> to the client as a DoNotRetryIOException.
> In this case we want the client exception to be a normal retriable 
> IOException, because if they try again after the region comes up again 
> somewhere else, the Scan will likely succeed. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to