Accumulo
  1. Accumulo
  2. ACCUMULO-328

NPE when getting user authorizations

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.4.0
    • Component/s: client, tserver
    • Labels:

      Description

      While running the concurrent random walk test, saw the following bug. I think a user was deleted at around the same time the request for user auths came in.

      Saw the follwing error in the random walk logs.

      19 01:42:10,810 [randomwalk.Framework] ERROR: Error during random walk
      java.lang.Exception: Error running node Concurrent.xml
              at org.apache.accumulo.server.test.randomwalk.Module.visit(Module.java:253)
              at org.apache.accumulo.server.test.randomwalk.Framework.run(Framework.java:61)
              at org.apache.accumulo.server.test.randomwalk.Framework.main(Framework.java:114)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.apache.accumulo.start.Main$1.run(Main.java:89)
              at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.Exception: Error running node ct.ChangeAuthorizations
              at org.apache.accumulo.server.test.randomwalk.Module.visit(Module.java:253)
              at org.apache.accumulo.server.test.randomwalk.Module.visit(Module.java:249)
              ... 8 more
      Caused by: org.apache.accumulo.core.client.AccumuloException: org.apache.thrift.TApplicationException: Internal error processing getUserAuthorizations
              at org.apache.accumulo.core.client.admin.SecurityOperationsImpl.execute(SecurityOperationsImpl.java:78)
              at org.apache.accumulo.core.client.admin.SecurityOperationsImpl.getUserAuthorizations(SecurityOperationsImpl.java:221)
              at org.apache.accumulo.server.test.randomwalk.concurrent.ChangeAuthorizations.visit(ChangeAuthorizations.java:43)
              at org.apache.accumulo.server.test.randomwalk.Module.visit(Module.java:249)
              ... 9 more
      Caused by: org.apache.thrift.TApplicationException: Internal error processing getUserAuthorizations
              at org.apache.thrift.TApplicationException.read(TApplicationException.java:108)
              at org.apache.accumulo.core.client.impl.thrift.ClientService$Client.recv_getUserAuthorizations(ClientService.java:644)
              at org.apache.accumulo.core.client.impl.thrift.ClientService$Client.getUserAuthorizations(ClientService.java:625)
              at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at cloudtrace.instrument.thrift.TraceWrap$2.invoke(TraceWrap.java:83)
              at $Proxy0.getUserAuthorizations(Unknown Source)
              at org.apache.accumulo.core.client.admin.SecurityOperationsImpl$6.execute(SecurityOperationsImpl.java:224)
              at org.apache.accumulo.core.client.admin.SecurityOperationsImpl$6.execute(SecurityOperationsImpl.java:221)
              at org.apache.accumulo.core.client.impl.ServerClient.executeRaw(ServerClient.java:84)
              at org.apache.accumulo.core.client.admin.SecurityOperationsImpl.execute(SecurityOperationsImpl.java:66)
              ... 12 more
      

      Searched the tablet server logs by time to find the server that execute the security operation and found the following.

      19 01:42:10,808 [thrift.ClientService$Processor] ERROR: Internal error processing getUserAuthorizations
      java.lang.IllegalArgumentException: argument was null:Is null- arg1? true
              at org.apache.accumulo.core.util.ArgumentChecker.notNull(ArgumentChecker.java:31)
              at org.apache.accumulo.core.security.Authorizations.<init>(Authorizations.java:102)
              at org.apache.accumulo.server.security.ZKAuthenticator$Tool.convertAuthorizations(ZKAuthenticator.java:641)
              at org.apache.accumulo.server.security.ZKAuthenticator.getUserAuthorizations(ZKAuthenticator.java:341)
              at org.apache.accumulo.server.security.Auditor.getUserAuthorizations(Auditor.java:137)
              at org.apache.accumulo.server.client.ClientServiceHandler.getUserAuthorizations(ClientServiceHandler.java:145)
              at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at cloudtrace.instrument.thrift.TraceWrap$1.invoke(TraceWrap.java:58)
              at $Proxy2.getUserAuthorizations(Unknown Source)
              at org.apache.accumulo.core.client.impl.thrift.ClientService$Processor$getUserAuthorizations.process(ClientService.java:2371)
              at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Processor.process(TabletClientService.java:2037)
              at org.apache.accumulo.server.util.TServerUtils$TimedProcessor.process(TServerUtils.java:151)
              at org.apache.thrift.server.TNonblockingServer$FrameBuffer.invoke(TNonblockingServer.java:631)
              at org.apache.accumulo.server.util.TServerUtils$THsHaServer$Invocation.run(TServerUtils.java:199)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
              at org.apache.accumulo.core.util.LoggingRunnable.run(LoggingRunnable.java:34)
              at java.lang.Thread.run(Thread.java:662)
      

      Need better debugging info when this occurs on the client side, need to know which tablet server.

        Activity

        Hide
        jv added a comment -

        I was playing fast and loose. Should be more specific about checking values instead of just catching exceptions.

        Show
        jv added a comment - I was playing fast and loose. Should be more specific about checking values instead of just catching exceptions.

          People

          • Assignee:
            Unassigned
            Reporter:
            Keith Turner
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development