Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-3164

PhoenixConnection leak in PQS with security enabled

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 4.8.0
    • Fix Version/s: 4.9.0, 4.8.1
    • Labels:
      None

      Description

      Noticed this one yesterday in some testing. PQS clients were getting stuck in a loop trying to find the location of the hbase:meta region, but never actually finding it despite HBase appearing to be 100% healthy.

      In PQS:

      "qtp1908490900-20" daemon prio=10 tid=0x00007f67284ae800 nid=0x72b8 waiting on condition [0x00007f66f570a000]
         java.lang.Thread.State: TIMED_WAITING (sleeping)
      	at java.lang.Thread.sleep(Native Method)
      	at java.lang.Thread.sleep(Thread.java:340)
      	at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:360)
      	at org.apache.hadoop.hbase.util.RetryCounter.sleepUntilNextRetry(RetryCounter.java:158)
      	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:373)
      	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:622)
      	at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.getMetaRegionState(MetaTableLocator.java:491)
      	at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.getMetaRegionLocation(MetaTableLocator.java:172)
      	at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:608)
      	at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:589)
      	at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:568)
      	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:61)
      	at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1192)
      	- locked <0x000000070b109930> (a java.lang.Object)
      	at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1159)
      	at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300)
      	at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:156)
      	at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60)
      	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
      	at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:326)
      	at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:301)
      	at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:166)
      	at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:161)
      	at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:794)
      	at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
      	at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
      	at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:405)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2358)
      	- locked <0x000000070b0c4d58> (a org.apache.phoenix.query.ConnectionQueryServicesImpl)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2327)
      	at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:78)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2327)
      	at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:233)
      	at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:144)
      	at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:202)
      	at java.sql.DriverManager.getConnection(DriverManager.java:571)
      	at java.sql.DriverManager.getConnection(DriverManager.java:187)
      	at org.apache.calcite.avatica.jdbc.JdbcMeta.openConnection(JdbcMeta.java:616)
      	- locked <0x000000070538c5e0> (a org.apache.calcite.avatica.jdbc.JdbcMeta)
      	at org.apache.calcite.avatica.remote.LocalService.apply(LocalService.java:299)
      	at org.apache.calcite.avatica.remote.Service$OpenConnectionRequest.accept(Service.java:1748)
      	at org.apache.calcite.avatica.remote.Service$OpenConnectionRequest.accept(Service.java:1728)
      	at org.apache.calcite.avatica.remote.AbstractHandler.apply(AbstractHandler.java:95)
      	at org.apache.calcite.avatica.remote.ProtobufHandler.apply(ProtobufHandler.java:46)
      	at org.apache.calcite.avatica.server.AvaticaProtobufHandler$2.call(AvaticaProtobufHandler.java:120)
      	at org.apache.calcite.avatica.server.AvaticaProtobufHandler$2.call(AvaticaProtobufHandler.java:118)
      	at org.apache.phoenix.queryserver.server.Main$PhoenixDoAsCallback$1.run(Main.java:282)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at javax.security.auth.Subject.doAs(Subject.java:415)
      	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1724)
      	at org.apache.phoenix.queryserver.server.Main$PhoenixDoAsCallback.doAsRemoteUser(Main.java:279)
      	at org.apache.calcite.avatica.server.HttpServer$Builder$1.doAsRemoteUser(HttpServer.java:648)
      	at org.apache.calcite.avatica.server.AvaticaProtobufHandler.handle(AvaticaProtobufHandler.java:117)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:542)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.server.Server.handle(Server.java:499)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
      	at org.apache.phoenix.shaded.org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
      	at java.lang.Thread.run(Thread.java:745)
      

      And on the clients:

      AvaticaClientRuntimeException: Remote driver error: RuntimeException: java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations -> SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations -> RetriesExhaustedException: Can't get the locations. Error -1 (00000) null
      
      java.lang.RuntimeException: java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations
      at org.apache.calcite.avatica.jdbc.JdbcMeta.openConnection(JdbcMeta.java:619)
      at org.apache.calcite.avatica.remote.LocalService.apply(LocalService.java:299)
      at org.apache.calcite.avatica.remote.Service$OpenConnectionRequest.accept(Service.java:1748)
      at org.apache.calcite.avatica.remote.Service$OpenConnectionRequest.accept(Service.java:1728)
      at org.apache.calcite.avatica.remote.AbstractHandler.apply(AbstractHandler.java:95)
      at org.apache.calcite.avatica.remote.ProtobufHandler.apply(ProtobufHandler.java:46)
      at org.apache.calcite.avatica.server.AvaticaProtobufHandler$2.call(AvaticaProtobufHandler.java:120)
      at org.apache.calcite.avatica.server.AvaticaProtobufHandler$2.call(AvaticaProtobufHandler.java:118)
      at org.apache.phoenix.queryserver.server.Main$PhoenixDoAsCallback$1.run(Main.java:282)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAs(Subject.java:415)
      at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1724)
      at org.apache.phoenix.queryserver.server.Main$PhoenixDoAsCallback.doAsRemoteUser(Main.java:279)
      at org.apache.calcite.avatica.server.HttpServer$Builder$1.doAsRemoteUser(HttpServer.java:648)
      at org.apache.calcite.avatica.server.AvaticaProtobufHandler.handle(AvaticaProtobufHandler.java:117)
      at org.apache.phoenix.shaded.org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:542)
      at org.apache.phoenix.shaded.org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
      at org.apache.phoenix.shaded.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
      at org.apache.phoenix.shaded.org.eclipse.jetty.server.Server.handle(Server.java:499)
      at org.apache.phoenix.shaded.org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
      at org.apache.phoenix.shaded.org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
      at org.apache.phoenix.shaded.org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
      at org.apache.phoenix.shaded.org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
      at org.apache.phoenix.shaded.org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
      at java.lang.Thread.run(Thread.java:745)
      Caused by: java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations
      at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2590)
      at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2327)
      at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:78)
      at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2327)
      at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:233)
      at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:144)
      at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:202)
      at java.sql.DriverManager.getConnection(DriverManager.java:571)
      at java.sql.DriverManager.getConnection(DriverManager.java:187)
      at org.apache.calcite.avatica.jdbc.JdbcMeta.openConnection(JdbcMeta.java:616)
      ... 24 more
      Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations
      at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:312)
      at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:156)
      at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60)
      at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
      at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:326)
      at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:301)
      at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:166)
      at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:161)
      at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:794)
      at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
      at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
      at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:405)
      at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2358)
      ... 33 more
      
      
      at org.apache.calcite.avatica.remote.Service$ErrorResponse.toException(Service.java:2453)
      at org.apache.calcite.avatica.remote.RemoteProtobufService._apply(RemoteProtobufService.java:61)
      at org.apache.calcite.avatica.remote.ProtobufService.apply(ProtobufService.java:81)
      at org.apache.calcite.avatica.remote.Driver.connect(Driver.java:175)
      at sqlline.DatabaseConnection.connect(DatabaseConnection.java:157)
      at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:203)
      at sqlline.Commands.connect(Commands.java:1064)
      at sqlline.Commands.connect(Commands.java:996)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
      at sqlline.SqlLine.dispatch(SqlLine.java:804)
      at sqlline.SqlLine.initArgs(SqlLine.java:588)
      at sqlline.SqlLine.begin(SqlLine.java:656)
      at sqlline.SqlLine.start(SqlLine.java:398)
      at sqlline.SqlLine.main(SqlLine.java:292)
      at org.apache.phoenix.queryserver.client.SqllineWrapper$1.run(SqllineWrapper.java:78)
      at org.apache.phoenix.queryserver.client.SqllineWrapper$1.run(SqllineWrapper.java:75)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAs(Subject.java:415)
      at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1724)
      at org.apache.phoenix.queryserver.client.SqllineWrapper.main(SqllineWrapper.java:75)
      

      Best as I can tell so far, this is due to PHOENIX-3126 and PQS not caching UGI instances. hashCode() and equals() on UGI work on references (not on values). I believe the simple fix is to just add some caching of UGI instances for the end-users in PQS.

      1. PHOENIX-3164.001.patch
        13 kB
        Josh Elser
      2. PHOENIX-3164.002.patch
        13 kB
        Josh Elser

        Issue Links

          Activity

          Hide
          elserj Josh Elser added a comment - - edited

          .001 introduces a Guava cache (similar in characteristics to the JDBC connection cache inside PQS already) to cache instances of UGI's so that downstream checks in Phoenix will work as intended.

          Some unit tests to verify that the caching is happening as intended.

          Also, I was able to verify, with some logging when the ConnectionQueryServices is instantiated as well as the output of `netstat` that, after this patch, we don't get a new CQS every time a user connects.

          Show
          elserj Josh Elser added a comment - - edited .001 introduces a Guava cache (similar in characteristics to the JDBC connection cache inside PQS already) to cache instances of UGI's so that downstream checks in Phoenix will work as intended. Some unit tests to verify that the caching is happening as intended. Also, I was able to verify, with some logging when the ConnectionQueryServices is instantiated as well as the output of `netstat` that, after this patch, we don't get a new CQS every time a user connects.
          Hide
          hadoopqa Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12822863/PHOENIX-3164.001.patch
          against master branch at commit ba82b1cb5a14c2cf109deb8a862389142d92f541.
          ATTACHMENT ID: 12822863

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 3 new or modified tests.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          -1 javadoc. The javadoc tool appears to have generated 34 warning messages.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces the following lines longer than 100:
          + public static final String QUERY_SERVER_UGI_CACHE_MAX_SIZE = "phoenix.queryserver.ugi.cache.max.size";
          + public static final String QUERY_SERVER_UGI_CACHE_INITIAL_SIZE = "phoenix.queryserver.ugi.cache.initial.size";
          + public static final String QUERY_SERVER_UGI_CACHE_CONCURRENCY = "phoenix.queryserver.ugi.cache.concurrency";
          + .initialCapacity(conf.getInt(QueryServices.QUERY_SERVER_UGI_CACHE_INITIAL_SIZE, QueryServicesOptions.DEFAULT_QUERY_SERVER_UGI_CACHE_INITIAL_SIZE))
          + .concurrencyLevel(conf.getInt(QueryServices.QUERY_SERVER_UGI_CACHE_CONCURRENCY, QueryServicesOptions.DEFAULT_QUERY_SERVER_UGI_CACHE_CONCURRENCY))
          + .maximumSize(conf.getLong(QueryServices.QUERY_SERVER_UGI_CACHE_MAX_SIZE, QueryServicesOptions.DEFAULT_QUERY_SERVER_UGI_CACHE_MAX_SIZE))
          + // We are guaranteed by Avatica that the `remoteUserName` is properly authenticated by the time
          + // Proxy this user on top of the server's user (the real user). Get a cached instance, the LoadingCache
          + // PHOENIX-3164 UGI's hashCode and equals methods rely on reference checks, not value-based
          + // checks. We need to make sure we return the same UGI instance for a remote user, otherwise

          +1 core tests. The patch passed unit tests in .

          -1 core zombie tests. There are 1 zombie test(s):

          Test results: https://builds.apache.org/job/PreCommit-PHOENIX-Build/503//testReport/
          Javadoc warnings: https://builds.apache.org/job/PreCommit-PHOENIX-Build/503//artifact/patchprocess/patchJavadocWarnings.txt
          Console output: https://builds.apache.org/job/PreCommit-PHOENIX-Build/503//console

          This message is automatically generated.

          Show
          hadoopqa Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12822863/PHOENIX-3164.001.patch against master branch at commit ba82b1cb5a14c2cf109deb8a862389142d92f541. ATTACHMENT ID: 12822863 +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 3 new or modified tests. +1 javac . The applied patch does not increase the total number of javac compiler warnings. -1 javadoc . The javadoc tool appears to have generated 34 warning messages. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces the following lines longer than 100: + public static final String QUERY_SERVER_UGI_CACHE_MAX_SIZE = "phoenix.queryserver.ugi.cache.max.size"; + public static final String QUERY_SERVER_UGI_CACHE_INITIAL_SIZE = "phoenix.queryserver.ugi.cache.initial.size"; + public static final String QUERY_SERVER_UGI_CACHE_CONCURRENCY = "phoenix.queryserver.ugi.cache.concurrency"; + .initialCapacity(conf.getInt(QueryServices.QUERY_SERVER_UGI_CACHE_INITIAL_SIZE, QueryServicesOptions.DEFAULT_QUERY_SERVER_UGI_CACHE_INITIAL_SIZE)) + .concurrencyLevel(conf.getInt(QueryServices.QUERY_SERVER_UGI_CACHE_CONCURRENCY, QueryServicesOptions.DEFAULT_QUERY_SERVER_UGI_CACHE_CONCURRENCY)) + .maximumSize(conf.getLong(QueryServices.QUERY_SERVER_UGI_CACHE_MAX_SIZE, QueryServicesOptions.DEFAULT_QUERY_SERVER_UGI_CACHE_MAX_SIZE)) + // We are guaranteed by Avatica that the `remoteUserName` is properly authenticated by the time + // Proxy this user on top of the server's user (the real user). Get a cached instance, the LoadingCache + // PHOENIX-3164 UGI's hashCode and equals methods rely on reference checks, not value-based + // checks. We need to make sure we return the same UGI instance for a remote user, otherwise +1 core tests . The patch passed unit tests in . -1 core zombie tests . There are 1 zombie test(s): Test results: https://builds.apache.org/job/PreCommit-PHOENIX-Build/503//testReport/ Javadoc warnings: https://builds.apache.org/job/PreCommit-PHOENIX-Build/503//artifact/patchprocess/patchJavadocWarnings.txt Console output: https://builds.apache.org/job/PreCommit-PHOENIX-Build/503//console This message is automatically generated.
          Hide
          elserj Josh Elser added a comment -

          Zombie test was an overmatch from Ambari also running on jenkins. Let me fix the line-length issues though.

          Show
          elserj Josh Elser added a comment - Zombie test was an overmatch from Ambari also running on jenkins. Let me fix the line-length issues though.
          Hide
          devaraj Devaraj Das added a comment -

          LGTM

          Show
          devaraj Devaraj Das added a comment - LGTM
          Hide
          elserj Josh Elser added a comment -

          .002 fixes the line length issues in Main (PQS runner), but doesn't in QueryServices (to match the existing style).

          Show
          elserj Josh Elser added a comment - .002 fixes the line length issues in Main (PQS runner), but doesn't in QueryServices (to match the existing style).
          Hide
          hadoopqa Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12822875/PHOENIX-3164.002.patch
          against master branch at commit ba82b1cb5a14c2cf109deb8a862389142d92f541.
          ATTACHMENT ID: 12822875

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 3 new or modified tests.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          -1 javadoc. The javadoc tool appears to have generated 34 warning messages.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 lineLengths. The patch introduces the following lines longer than 100:
          + public static final String QUERY_SERVER_UGI_CACHE_MAX_SIZE = "phoenix.queryserver.ugi.cache.max.size";
          + public static final String QUERY_SERVER_UGI_CACHE_INITIAL_SIZE = "phoenix.queryserver.ugi.cache.initial.size";
          + public static final String QUERY_SERVER_UGI_CACHE_CONCURRENCY = "phoenix.queryserver.ugi.cache.concurrency";
          + UserGroupInformation serverUgi = UserGroupInformation.createUserForTesting("server", new String[0]);
          + UserGroupInformation serverUgi = UserGroupInformation.createUserForTesting("server", new String[0]);
          + UserGroupInformation user1 = callback.doAsRemoteUser("user1", "localhost:1234", new Callable<UserGroupInformation>() {
          + UserGroupInformation user2 = callback.doAsRemoteUser("user2", "localhost:1235", new Callable<UserGroupInformation>() {
          + UserGroupInformation user1Reference = callback.doAsRemoteUser("user1", "localhost:1234", new Callable<UserGroupInformation>() {
          + // The UserGroupInformation.getCurrentUser() actually returns a new UGI instance, but the internal
          + assertEquals("These should be the same (cached) instance", user1.hashCode(), user1Reference.hashCode());

          +1 core tests. The patch passed unit tests in .

          -1 core zombie tests. There are 1 zombie test(s):

          Test results: https://builds.apache.org/job/PreCommit-PHOENIX-Build/504//testReport/
          Javadoc warnings: https://builds.apache.org/job/PreCommit-PHOENIX-Build/504//artifact/patchprocess/patchJavadocWarnings.txt
          Console output: https://builds.apache.org/job/PreCommit-PHOENIX-Build/504//console

          This message is automatically generated.

          Show
          hadoopqa Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12822875/PHOENIX-3164.002.patch against master branch at commit ba82b1cb5a14c2cf109deb8a862389142d92f541. ATTACHMENT ID: 12822875 +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 3 new or modified tests. +1 javac . The applied patch does not increase the total number of javac compiler warnings. -1 javadoc . The javadoc tool appears to have generated 34 warning messages. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 lineLengths . The patch introduces the following lines longer than 100: + public static final String QUERY_SERVER_UGI_CACHE_MAX_SIZE = "phoenix.queryserver.ugi.cache.max.size"; + public static final String QUERY_SERVER_UGI_CACHE_INITIAL_SIZE = "phoenix.queryserver.ugi.cache.initial.size"; + public static final String QUERY_SERVER_UGI_CACHE_CONCURRENCY = "phoenix.queryserver.ugi.cache.concurrency"; + UserGroupInformation serverUgi = UserGroupInformation.createUserForTesting("server", new String [0] ); + UserGroupInformation serverUgi = UserGroupInformation.createUserForTesting("server", new String [0] ); + UserGroupInformation user1 = callback.doAsRemoteUser("user1", "localhost:1234", new Callable<UserGroupInformation>() { + UserGroupInformation user2 = callback.doAsRemoteUser("user2", "localhost:1235", new Callable<UserGroupInformation>() { + UserGroupInformation user1Reference = callback.doAsRemoteUser("user1", "localhost:1234", new Callable<UserGroupInformation>() { + // The UserGroupInformation.getCurrentUser() actually returns a new UGI instance, but the internal + assertEquals("These should be the same (cached) instance", user1.hashCode(), user1Reference.hashCode()); +1 core tests . The patch passed unit tests in . -1 core zombie tests . There are 1 zombie test(s): Test results: https://builds.apache.org/job/PreCommit-PHOENIX-Build/504//testReport/ Javadoc warnings: https://builds.apache.org/job/PreCommit-PHOENIX-Build/504//artifact/patchprocess/patchJavadocWarnings.txt Console output: https://builds.apache.org/job/PreCommit-PHOENIX-Build/504//console This message is automatically generated.
          Hide
          hudson Hudson added a comment -

          SUCCESS: Integrated in Jenkins build Phoenix-master #1361 (See https://builds.apache.org/job/Phoenix-master/1361/)
          PHOENIX-3164 Cache UGI instances for remote users in PQS (elserj: rev 44cf0827f1e5577510ee95f149df8d552a56da3c)

          • (edit) phoenix-core/src/main/java/org/apache/phoenix/query/QueryServicesOptions.java
          • (add) phoenix-queryserver/src/test/java/org/apache/phoenix/queryserver/server/PhoenixDoAsCallbackTest.java
          • (edit) phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java
          • (edit) phoenix-queryserver/src/main/java/org/apache/phoenix/queryserver/server/Main.java
          Show
          hudson Hudson added a comment - SUCCESS: Integrated in Jenkins build Phoenix-master #1361 (See https://builds.apache.org/job/Phoenix-master/1361/ ) PHOENIX-3164 Cache UGI instances for remote users in PQS (elserj: rev 44cf0827f1e5577510ee95f149df8d552a56da3c) (edit) phoenix-core/src/main/java/org/apache/phoenix/query/QueryServicesOptions.java (add) phoenix-queryserver/src/test/java/org/apache/phoenix/queryserver/server/PhoenixDoAsCallbackTest.java (edit) phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java (edit) phoenix-queryserver/src/main/java/org/apache/phoenix/queryserver/server/Main.java

            People

            • Assignee:
              elserj Josh Elser
              Reporter:
              elserj Josh Elser
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development