Quanlong Huang created IMPALA-13202:
---------------------------------------

             Summary: 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


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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to