[ https://issues.apache.org/jira/browse/IMPALA-13202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17867846#comment-17867846 ]
Alexey Serbin commented on IMPALA-13202: ---------------------------------------- A couple of cents from my side. After evaluating a few alternatives, I'm in favor of resolving this as suggested by [~joemcdonnell], i.e. by adding a new method into the C++ Kudu client API, similar to [KuduClientBuilder::num_reactors()|https://kudu.apache.org/cpp-client-api/classkudu_1_1client_1_1KuduClientBuilder.html#acb7f399a90a34fcfde56d68549e0f3d2] that's already available to configure another parameter of the client's Messenger. That way it's logically separate from parameters that Impala uses for its own KRPC components, and it might be useful in other contexts when a Kudu C++ client might be embedded as a part of a Kudu server (e.g., when considering different options to build Kudu REST API). Also, adding one extra method to control another RPC-related parameter of the Kudu client in addition to {{KuduClientBuilder::num_reactors()}} seems quite logical to me. Thanks! > KRPC flags used by libkudu_client.so can't be configured > -------------------------------------------------------- > > Key: IMPALA-13202 > URL: https://issues.apache.org/jira/browse/IMPALA-13202 > Project: IMPALA > Issue Type: Bug > Components: Backend > Reporter: Quanlong Huang > Priority: Critical > Attachments: data.parquet > > > The way Impala integrates with KRPC is porting the KRPC codes into the Impala > code base. Flags and methods of KRPC are defined as GLOBAL in the impalad > executable. libkudu_client.so also compiles from the same KRPC codes and have > duplicate flags and methods defined as HIDDEN. > To be specifit, both the impalad executable and libkudu_client.so have the > symbol for kudu::rpc::InboundTransfer::ReceiveBuffer() > {noformat} > $ readelf -s --wide be/build/latest/service/impalad | grep ReceiveBuffer > 11118: 00000000022f5c88 1936 FUNC GLOBAL DEFAULT 13 > _ZN4kudu3rpc15InboundTransfer13ReceiveBufferEPNS_6SocketEPNS_10faststringE > 81380: 00000000022f5c88 1936 FUNC GLOBAL DEFAULT 13 > _ZN4kudu3rpc15InboundTransfer13ReceiveBufferEPNS_6SocketEPNS_10faststringE > $ readelf -s --wide > toolchain/toolchain-packages-gcc10.4.0/kudu-e742f86f6d/debug/lib/libkudu_client.so > | grep ReceiveBuffer > 1601: 0000000000086e4a 108 FUNC LOCAL DEFAULT 12 > _ZN4kudu3rpc15InboundTransfer13ReceiveBufferEPNS_6SocketEPNS_10faststringE.cold > 11905: 00000000001fec60 2076 FUNC LOCAL HIDDEN 12 > _ZN4kudu3rpc15InboundTransfer13ReceiveBufferEPNS_6SocketEPNS_10faststringE > $ c++filt > _ZN4kudu3rpc15InboundTransfer13ReceiveBufferEPNS_6SocketEPNS_10faststringE > kudu::rpc::InboundTransfer::ReceiveBuffer(kudu::Socket*, kudu::faststring*) > {noformat} > KRPC flags like rpc_max_message_size are also defined in both the impalad > executable and libkudu_client.so: > {noformat} > $ readelf -s --wide be/build/latest/service/impalad | grep > FLAGS_rpc_max_message_size > 14380: 0000000006006738 8 OBJECT GLOBAL DEFAULT 30 > _ZN5fLI6426FLAGS_rpc_max_message_sizeE > 80396: 0000000006006741 1 OBJECT GLOBAL DEFAULT 30 > _ZN3fLB44FLAGS_rpc_max_message_size_enable_validationE > 81399: 0000000006006741 1 OBJECT GLOBAL DEFAULT 30 > _ZN3fLB44FLAGS_rpc_max_message_size_enable_validationE > 117873: 0000000006006738 8 OBJECT GLOBAL DEFAULT 30 > _ZN5fLI6426FLAGS_rpc_max_message_sizeE > $ readelf -s --wide > toolchain/toolchain-packages-gcc10.4.0/kudu-e742f86f6d/debug/lib/libkudu_client.so > | grep FLAGS_rpc_max_message_size > 11882: 00000000008d61e1 1 OBJECT LOCAL HIDDEN 27 > _ZN3fLB44FLAGS_rpc_max_message_size_enable_validationE > 11906: 00000000008d61d8 8 OBJECT LOCAL DEFAULT 27 > _ZN5fLI6426FLAGS_rpc_max_message_sizeE > $ c++filt _ZN5fLI6426FLAGS_rpc_max_message_sizeE > fLI64::FLAGS_rpc_max_message_size {noformat} > libkudu_client.so uses its own methods and flags. The flags are HIDDEN so > can't be modified by Impala codes. E.g. IMPALA-4874 bumps > FLAGS_rpc_max_message_size to 2GB in RpcMgr::Init(), but the HIDDEN variable > FLAGS_rpc_max_message_size used in libkudu_client.so is still the default > value 50MB (52428800). We've seen error messages like this in the master > branch: > {code:java} > I0708 10:23:31.784974 2943 meta_cache.cc:294] > c243bda4702a5ab9:0ba93d2400000001] tablet 0c8f3446538449ee9d3df5056afe775e: > replica e0e1db54dab74f208e37ea1b975595e5 (127.0.0.1:31202) has failed: > Network error: TS failed: RPC frame had a length of 53477464, but we only > support messages up to 52428800 bytes long.{code} > CC [~joemcdonnell] [~wzhou] [~aserbin] -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org For additional commands, e-mail: issues-all-h...@impala.apache.org