[ https://issues.apache.org/jira/browse/KUDU-3582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17851227#comment-17851227 ]
Wenzhe Zhou commented on KUDU-3582: ----------------------------------- Copied from slack channel: Alexey Serbin: I took a quick look at https://issues.apache.org/jira/browse/KUDU-3582 and it's not clear to me what the bug is about. Did you expect to get complete and consistent data from a cancelled RPC? Wenzhe Zhou: We don't need complete and consistent data for cancelled RPC, but expect sidecar to return error if data is incomplete. Alexey Serbin: Ah, I see. Is that something about about getting non-OK from RpcSidecar::ParseSidecars() CallResponse::GetSidecar() ? Or the idea is to introduce some extra API to report on non-consistent sidecar's data? (edited) Wenzhe Zhou: RpcSidecar::ParseSidecars() is not directly called by Impala code. Impala calls RpcContext.GetSidecar(). It's good to return error from RpcContext.GetSidecar() for non consistent sidecar's data. Alexey Serbin: OK, I see. Do you know for sure that the inconsistency in the sidecar's data was due to RPC being cancelled, or it's not yet clear what actually happened? Wenzhe Zhou: It's not yet clear what actually happened. But there were lots of RPC being cancelled due to long delay. I guess it might be the cause. > Incomplete sidecar data returned by RpcContext::GetInboundSidecar() > ------------------------------------------------------------------- > > Key: KUDU-3582 > URL: https://issues.apache.org/jira/browse/KUDU-3582 > Project: Kudu > Issue Type: Bug > Components: rpc > Reporter: Wenzhe Zhou > Priority: Major > > Impala executor calls KRPC sidecar API RpcContext::GetInboundSidecar() to > read serialized thrift object from KRPC, then do thrift deserialization. (See > GetSidecar() at > https://github.com/apache/impala/blob/master/be/src/rpc/sidecar-util.h#L60-L67) > In a customer reported cases, extra workloads were added to Impala cluster, > which caused long delay for KRPCs between Impala daemons. The long delay > caused KRPCs been cancelled, hence impala query failures. > {code:java} > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.383988 1182322 krpc-data-stream-sender.cc:405] Slow EndDataStream > RPC to 10.243.38.160:27000 > (fragment_instance_id=9940332ce09828fd:b751966300000632): took 59m57s. Error: > Aborted: EndDataStream RPC to 10.243.38.160:27000 is cancelled in state > ON_OUTBOUND_QUEUE > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.384006 1182322 kudu-status-util.h:55] EndDataStream() to > 10.243.38.160:27000 failed: Aborted: EndDataStream RPC to 10.243.38.160:27000 > is cancelled in state ON_OUTBOUND_QUEUE > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.384631 1182314 krpc-data-stream-sender.cc:405] Slow EndDataStream > RPC to 10.34.163.32:27000 > (fragment_instance_id=9940332ce09828fd:b751966300000735): took 59m57s. Error: > Aborted: EndDataStream RPC to 10.34.163.32:27000 is cancelled in state > ON_OUTBOUND_QUEUE > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.384668 1182314 kudu-status-util.h:55] EndDataStream() to > 10.34.163.32:27000 failed: Aborted: EndDataStream RPC to 10.34.163.32:27000 > is cancelled in state ON_OUTBOUND_QUEUE > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.420662 1182313 krpc-data-stream-sender.cc:405] Slow EndDataStream > RPC to 10.243.36.21:27000 > (fragment_instance_id=9940332ce09828fd:b75196630000033a): took 1h. Error: > Aborted: EndDataStream RPC to 10.243.36.21:27000 is cancelled in state > ON_OUTBOUND_QUEUE > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.420683 1182313 kudu-status-util.h:55] EndDataStream() to > 10.243.36.21:27000 failed: Aborted: EndDataStream RPC to 10.243.36.21:27000 > is cancelled in state ON_OUTBOUND_QUEUE > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.420779 1182322 krpc-data-stream-sender.cc:405] Slow EndDataStream > RPC to 10.243.38.160:27000 > (fragment_instance_id=9940332ce09828fd:b75196630000033b): took 1h. Error: > Aborted: EndDataStream RPC to 10.243.38.160:27000 is cancelled in state > ON_OUTBOUND_QUEUE > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.420799 1182322 kudu-status-util.h:55] EndDataStream() to > 10.243.38.160:27000 failed: Aborted: EndDataStream RPC to 10.243.38.160:27000 > is cancelled in state ON_OUTBOUND_QUEUE > impalad.bdnyr019x21t1.nam.nsroot.net.impala.log.INFO.20240520-210047.1181040:I0521 > 05:40:09.421937 1182314 krpc-data-stream-sender.cc:405] Slow EndDataStream > RPC to 10.34.163.32:27000 > (fragment_instance_id=9940332ce09828fd:b75196630000043e): took 1h. Error: > Aborted: > {code} > Then extra workloads were removed and Impala cluster was restarted. During > restarting Impala cluster, lots of Impala daemon crashed. The stacktraces of > core files and log messages shows that impala daemons received incomplete > data from KRPC sidecar. The incomplete data did not cause thrift > deserialization failure so the valid but incomplete data was not captured and > handled properly. > See impala Jira: IMPALA-13107. The issue could not be re-produced locally. > A quick fixing from Impala side was merged to mitigate the crash issue. Need > to look into this issue further from KRPC internal. -- This message was sent by Atlassian Jira (v8.20.10#820010)