You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Josh Elser (JIRA)" <ji...@apache.org> on 2016/01/19 18:02:40 UTC

[jira] [Comment Edited] (ACCUMULO-4063) TServer should verify its lock is held before answering any RPC

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

Josh Elser edited comment on ACCUMULO-4063 at 1/19/16 5:02 PM:
---------------------------------------------------------------

bq. I sometimes see tservers ignoring a master because it doesn't hold a lock

This is the thing I'm arguing to fix. I shouldn't open up a log file and see thousands of lines about "Lock not acquired". Perhaps the title could be better worded as "Thrift server should not accept requests until lock is [initially] acquired"?


was (Author: elserj):
bq. I sometimes see tservers ignoring a master because it doesn't hold a lock

This is the thing I'm arguing to fix. I shouldn't open up a log file and see thousands of lines about "Lock not acquired". Perhaps the title could be better worded as "Thrift server should not accept requests until lock is acquired"?

> TServer should verify its lock is held before answering any RPC
> ---------------------------------------------------------------
>
>                 Key: ACCUMULO-4063
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-4063
>             Project: Accumulo
>          Issue Type: Bug
>          Components: rpc, tserver
>    Affects Versions: 1.7.0
>            Reporter: Josh Elser
>
> Noticing the following:
> {noformat}
> 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)
> {noformat}
> 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?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)