Uploaded image for project: 'Accumulo'
  1. Accumulo
  2. ACCUMULO-4063

Thrift server should not accept requests until lock is initially acquired

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Incomplete
    • 1.7.0
    • None
    • rpc, tserver
    • None

    Description

      Noticing the following:

      2015-11-19 22:42:47,130 [thrift.ProcessFunction] ERROR: Internal error processing flush
      org.apache.thrift.TException: Lock not acquired
              at org.apache.accumulo.server.rpc.RpcWrapper$1.invoke(RpcWrapper.java:51)
              at com.sun.proxy.$Proxy21.flush(Unknown Source)
              at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Processor$flush.getResult(TabletClientService.java:2671)
              at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Processor$flush.getResult(TabletClientService.java:2657)
              at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
              at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
              at org.apache.accumulo.server.rpc.TimedProcessor.process(TimedProcessor.java:63)
              at org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer.invoke(AbstractNonblockingServer.java:516)
              at org.apache.accumulo.server.rpc.CustomNonBlockingServer$1.run(CustomNonBlockingServer.java:78)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
              at org.apache.accumulo.fate.util.LoggingRunnable.run(LoggingRunnable.java:35)
              at java.lang.Thread.run(Thread.java:745)
      2015-11-19 22:42:47,402 [tserver.TabletServer$ThriftClientHandler] ERROR: org.apache.accumulo.tserver.session.MultiScanSession cannot be cast to org.apache.accumulo.tserver.session.ScanSession
      java.lang.ClassCastException: org.apache.accumulo.tserver.session.MultiScanSession cannot be cast to org.apache.accumulo.tserver.session.ScanSession
              at org.apache.accumulo.tserver.TabletServer$ThriftClientHandler.closeScan(TabletServer.java:574)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:497)
              at org.apache.accumulo.core.trace.wrappers.RpcServerInvocationHandler.invoke(RpcServerInvocationHandler.java:46)
              at org.apache.accumulo.server.rpc.RpcWrapper$1.invoke(RpcWrapper.java:47)
              at com.sun.proxy.$Proxy21.closeScan(Unknown Source)
              at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Processor$closeScan.getResult(TabletClientService.java:2309)
              at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Processor$closeScan.getResult(TabletClientService.java:2295)
              at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
              at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
              at org.apache.accumulo.server.rpc.TimedProcessor.process(TimedProcessor.java:63)
              at org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer.invoke(AbstractNonblockingServer.java:516)
              at org.apache.accumulo.server.rpc.CustomNonBlockingServer$1.run(CustomNonBlockingServer.java:78)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
              at org.apache.accumulo.fate.util.LoggingRunnable.run(LoggingRunnable.java:35)
              at java.lang.Thread.run(Thread.java:745)
      

      a flush rpc came in and was denied, but then a closeScan came in and threw an unrelated error (ignore the classcast for now).

      Are there any RPCs that a tabletserver should answer before it holds its lock?

      Attachments

        Activity

          People

            Unassigned Unassigned
            elserj Josh Elser
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: