常见 Crash / BUG / 优化 查询

  1. Josn 导入 crash

*** Aborted at 1667192760 (unix time) try "date -d @1667192760" if you are using GNU date ***
PC: @          0x27460a1 starrocks::vectorized::JsonDocumentStreamParser::get_current()
*** SIGSEGV (@0x8) received by PID 12653 (TID 0x7fa1a94c1700) from PID 8; stack trace: ***
    @          0x3fa3ad2 google::(anonymous namespace)::FailureSignalHandler()
    @     0x7fa2a1087630 (unknown)
    @          0x27460a1 starrocks::vectorized::JsonDocumentStreamParser::get_current()
    @          0x27455d7 starrocks::vectorized::JsonReader::_read_rows<>()
    @          0x27414d9 starrocks::vectorized::JsonReader::read_chunk()
    @          0x27416ec starrocks::vectorized::JsonScanner::get_next()
    @          0x272e5e0 starrocks::vectorized::FileScanNode::_scanner_scan()
    @          0x272ff4f starrocks::vectorized::FileScanNode::_scanner_worker()
    @          0x5a21410 execute_native_thread_routine
    @     0x7fa2a107fea5 start_thread
    @     0x7fa2a069ab0d __clone
  1. View + Union + Null 时查询报错或Crash

Mismatched row count

*** SIGSEGV (@0x0) received by PID 3659 (TID 0x7f17de2fb700) from PID 0; stack trace: ***
    @          0x3ff4972 google::(anonymous namespace)::FailureSignalHandler()
    @     0x7f186229a630 (unknown)
    @     0x7f186190bc00 __memmove_ssse3_back
    @          0x1a26464 starrocks::vectorized::FixedLengthColumnBase<>::append()
    @          0x25224ca starrocks::vectorized::NullableColumn::append()
    @          0x251009b starrocks::vectorized::Chunk::append_safe()
    @          0x27453a7 starrocks::vectorized::ChunksSorterHeapSort::done()
    @          0x27419e5 starrocks::vectorized::ChunksSorter::finish()
    @          0x28ba860 starrocks::pipeline::PartitionSortSinkOperator::set_finishing()
    @          0x28def07 starrocks::pipeline::PipelineDriver::_mark_operator_finishing()
    @          0x28dff3b starrocks::pipeline::PipelineDriver::process()
    @          0x28d67dc starrocks::pipeline::GlobalDriverExecutor::_worker_thread()
    @          0x21772c9 starrocks::ThreadPool::dispatch_thread()
    @          0x2172e7a starrocks::Thread::supervise_thread()
    @     0x7f1862292ea5 start_thread
    @     0x7f18618ad9fd __clone
    @                0x0 (unknown)
bug的触发条件:
1: 查询首先有view. 
2: view 中有 union 
3: union的孩子有 常量 NULL
4: 这个常量NULL位于union的第一个孩子中.
  1. bitmap_contains 消耗大量内存

terminate called after throwing an instance of 'query_id:b1e35703-a6de-11ed-adfa-78ac4489cf40, fragment_instance:b1e35703-a6de-11ed-adfa-78ac4489cf47
*** Aborted at 1675771249 (unix time) try "date -d @1675771249" if you are using GNU date ***
std::runtime_error'
  what():  failed memory alloc in constructor
PC: @     0x7fe1f947e387 __GI_raise
*** SIGABRT (@0xce40004d5a7) received by PID 316839 (TID 0x7fe13807f700) from PID 316839; stack trace: ***
    @          0x40e1c82 google::(anonymous namespace)::FailureSignalHandler()
    @     0x7fe1f9f33630 (unknown)
    @     0x7fe1f947e387 __GI_raise
    @     0x7fe1f947fa78 __GI_abort
    @          0x5ae6dd2 __gnu_cxx::__verbose_terminate_handler()
    @          0x5ae5886 __cxxabiv1::__terminate()
    @          0x5ae58f1 std::terminate()
    @          0x5ae5a96 __cxa_rethrow
    @          0x1653704 _ZNSt8_Rb_treeIjSt4pairIKj7RoaringESt10_Select1stIS3_ESt4lessIjESaIS3_EE7_M_copyINS9_11_Alloc_nodeEEEPSt13_Rb_tree_nodeIS3_EPKSD_PSt18_Rb_tree_node_baseRT_.isra.0.cold
    @          0x212826b starrocks::BitmapValue::BitmapValue()
    @          0x258608b starrocks::vectorized::ObjectColumn<>::append()
    @          0x2586412 starrocks::vectorized::ObjectColumn<>::append_value_multiple_times()
    @          0x293d750 starrocks::pipeline::CrossJoinLeftOperator::_copy_joined_rows_with_index_base_build()
    @          0x293dfc2 starrocks::pipeline::CrossJoinLeftOperator::pull_chunk()
    @          0x2965983 starrocks::pipeline::PipelineDriver::process()
    @          0x295bfb6 starrocks::pipeline::GlobalDriverExecutor::_worker_thread()
    @          0x21c59f9 starrocks::ThreadPool::dispatch_thread()
    @          0x21c15aa starrocks::Thread::supervise_thread()
    @     0x7fe1f9f2bea5 start_thread
    @     0x7fe1f9546b0d __clone
    @                0x0 (unknown)
  1. SQL 解析报错: location

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'location' at line 3
  1. 低基数导致 Plan 改写 Unknown error
ava.lang.IllegalStateException: null
        at com.google.common.base.Preconditions.checkState(Preconditions.java:494) ~[spark-dpp-1.0.0.jar:?]
        at com.starrocks.sql.plan.ScalarOperatorToExpr$Formatter.visitVariableReference(ScalarOperatorToExpr.java:133) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.ScalarOperatorToExpr$Formatter.visitVariableReference(ScalarOperatorToExpr.java:112) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.optimizer.operator.scalar.ColumnRefOperator.accept(ColumnRefOperator.java:110) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.ScalarOperatorToExpr.buildExecExpression(ScalarOperatorToExpr.java:79) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.PlanFragmentBuilder$PhysicalPlanTranslator.buildPartialTopNFragment(PlanFragmentBuilder.java:1749) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.PlanFragmentBuilder$PhysicalPlanTranslator.visitPhysicalTopN(PlanFragmentBuilder.java:1664) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.PlanFragmentBuilder$PhysicalPlanTranslator.visitPhysicalTopN(PlanFragmentBuilder.java:255) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.optimizer.operator.physical.PhysicalTopNOperator.accept(PhysicalTopNOperator.java:113) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.PlanFragmentBuilder$PhysicalPlanTranslator.visit(PlanFragmentBuilder.java:264) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.PlanFragmentBuilder$PhysicalPlanTranslator.visitPhysicalDecode(PlanFragmentBuilder.java:474) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.PlanFragmentBuilder$PhysicalPlanTranslator.visitPhysicalDecode(PlanFragmentBuilder.java:255) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.optimizer.operator.physical.PhysicalDecodeOperator.accept(PhysicalDecodeOperator.java:112) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.PlanFragmentBuilder$PhysicalPlanTranslator.visit(PlanFragmentBuilder.java:264) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.plan.PlanFragmentBuilder.createPhysicalPlan(PlanFragmentBuilder.java:169) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.StatementPlanner.createQueryPlan(StatementPlanner.java:110) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.StatementPlanner.plan(StatementPlanner.java:66) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.StatementPlanner.plan(StatementPlanner.java:37) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.StmtExecutor.execute(StmtExecutor.java:373) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:313) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ConnectProcessor.dispatch(ConnectProcessor.java:430) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ConnectProcessor.processOnce(ConnectProcessor.java:676) ~[starrocks-fe.jar:?]
        at com.starrocks.mysql.nio.ReadListener.lambda$handleEvent$0(ReadListener.java:55) ~[starrocks-fe.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_201]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_201]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
  • Github Issue:

  • Github Fix PR:
  • Jira:

  • 问题版本:
    • 2.4.0 ~ 2.4.3
    • 2.5.0 ~ 2.5.1
  • 修复版本:
    • 2.4.4+
    • 2.5.2+
  • 临时规避方法:
    • set global cbo_enable_low_cardinality_optimize=false; (会影响部分SQL的性能)
  • 问题原因:
    • 低基数查询Plan改写的问题
  1. 同样的SQL, 加Limit比不加Limit性能退化严重
    触发条件:
  • Limit 比较小
  • 有过滤条件
  • 过滤后的结果数据比较少
mysql> select lo_custkey from lineorder_flat where lo_revenue = 3322363 and lo_custkey = 2684693 limit 1;
+------------+
| lo_custkey |
+------------+
|    2684693 |
+------------+
1 row in set (13.25 sec)

mysql> select lo_custkey from lineorder_flat where lo_revenue = 3322363 and lo_custkey = 2684693;
+------------+
| lo_custkey |
+------------+
|    2684693 |
+------------+
1 row in set (0.08 sec)
  1. Librdkafka crash
*** Aborted at 1632307784 (unix time) try "date -d @1632307784" if you are using GNU date ***
PC: @ 0x7f2e6145a387 __GI_raise
*** SIGABRT (@0x27de9) received by PID 163305 (TID 0x7f2d8a2f0700) from PID 163305; stack trace: ***
@ 0x1fd12e2 google::(anonymous namespace)::FailureSignalHandler()
@ 0x7f2e61b03630 (unknown)
@ 0x7f2e6145a387 __GI_raise
@ 0x7f2e6145ba78 __GI_abort
@ 0x7f2e614531a6 __assert_fail_base
@ 0x7f2e61453252 __GI___assert_fail
@ 0x1d7c767 rd_kafka_broker_destroy_final
@ 0x1dfccb8 rd_kafka_metadata_refresh_topics
@ 0x1dfd04a rd_kafka_metadata_refresh_known_topics
@ 0x1d774c2 rd_kafka_broker_fail
@ 0x1d87bd4 rd_kafka_broker_op_serve
@ 0x1d89463 rd_kafka_broker_ops_io_serve
@ 0x1d89968 rd_kafka_broker_consumer_serve
@ 0x1d8b485 rd_kafka_broker_thread_main
@ 0x1df43a7 _thrd_wrapper_function
@ 0x7f2e61afbea5 start_thread
@ 0x7f2e615229fd __clone
  1. InfoSchemaDb id shouldn’t larger than 10000
2023-02-16 00:00:34,021 ERROR (leaderCheckpointer|75) [Checkpoint.runAfterCatalogReady():106] Exception when generate new image file
java.lang.IllegalStateException: InfoSchemaDb id shouldn’t larger than 10000, please restart your FE server
at com.google.common.base.Preconditions.checkState(Preconditions.java:510) ~[spark-dpp-1.0.0.jar:?]
at com.starrocks.server.LocalMetastore.loadCluster(LocalMetastore.java:3598) ~[starrocks-fe.jar:?]
at com.starrocks.server.GlobalStateMgr.loadImage(GlobalStateMgr.java:1131) ~[starrocks-fe.jar:?]
at com.starrocks.master.Checkpoint.runAfterCatalogReady(Checkpoint.java:87) [starrocks-fe.jar:?]
at com.starrocks.common.util.MasterDaemon.runOneCycle(MasterDaemon.java:61) [starrocks-fe.jar:?]
at com.starrocks.common.util.Daemon.run(Daemon.java:115) [starrocks-fe.jar:?]
  1. 动态分区:创建大量历史分区,并且超时
    当 dynamic_partition.start 设置的比较小时,会创建大量历史分区
  1. 主键模型开启 persistent index 后磁盘空间持续增长
  1. BE 启动加载 persistent index crash

*** Aborted at 1676903379 (unix time) try "date -d @1676903379" if you are using GNU date ***
PC: @          0x310317a starrocks::PersistentIndex::_merge_compaction()
*** SIGFPE (@0x310317a) received by PID 30837 (TID 0x7f8d745fe700) from PID 51392890; stack trace: ***
    @          0x4825332 google::(anonymous namespace)::FailureSignalHandler()
    @     0x7fe755c565e0 (unknown)
    @          0x310317a starrocks::PersistentIndex::_merge_compaction()
    @          0x3104bc0 starrocks::PersistentIndex::_check_and_flush_l0()
    @          0x31070c0 starrocks::PersistentIndex::commit()
    @          0x2e8936e starrocks::PrimaryIndex::commit()
    @          0x2f5cbf5 starrocks::TabletUpdates::_apply_compaction_commit()
    @          0x2f5e52d starrocks::TabletUpdates::do_apply()
    @          0x3762b55 starrocks::ThreadPool::dispatch_thread()
    @          0x375df8a starrocks::Thread::supervise_thread()
    @     0x7fe755c4ee25 start_thread
    @     0x7fe75526e34d __clone
    @                0x0 (unknown)
  1. Insert overwrite 或 物化视图刷新 导致 FE follower 内存泄漏
  1. 单表物化视图查询 Crash

*** SIGSEGV (@0x0) received by PID 287072 (TID 0x7f99979d7640) from PID 0; stack trace: ***
6    @          0x56ec9c2 google::(anonymous namespace)::FailureSignalHandler()
7    @     0x7f9b214fb1d0 (unknown)
8    @          0x453d51d std::__push_heap<>()
9    @          0x454a1d9 starrocks::vectorized::HeapMergeIterator::fill()
10    @          0x454b046 starrocks::vectorized::HeapMergeIterator::do_get_next()
11    @          0x454b704 starrocks::vectorized::HeapMergeIterator::do_get_next()
12    @          0x43d40c3 starrocks::vectorized::TimedChunkIterator::do_get_next()
13    @          0x43cfbae starrocks::vectorized::AggregateIterator::do_get_next()
14    @          0x43d1254 starrocks::vectorized::AggregateIterator::do_get_next()
15    @          0x43d40c3 starrocks::vectorized::TimedChunkIterator::do_get_next()
16    @          0x40484ae starrocks::vectorized::TabletReader::do_get_next()
17    @          0x4021292 starrocks::vectorized::ProjectionIterator::do_get_next()
18    @          0x2ee880b starrocks::pipeline::OlapChunkSource::_read_chunk_from_storage()
19    @          0x2ee8eeb starrocks::pipeline::OlapChunkSource::_read_chunk()
20    @          0x2ed888c starrocks::pipeline::ChunkSource::buffer_next_batch_chunks_blocking()
21    @          0x2c5bce4 _ZZN9starrocks8pipeline12ScanOperator18_trigger_next_scanEPNS_12RuntimeStateEiENKUlvE_clEv
22    @          0x2c6cd1d starrocks::workgroup::ScanExecutor::worker_thread()
23    @          0x47a3a9d starrocks::ThreadPool::dispatch_thread()
24    @          0x479e82a starrocks::Thread::supervise_thread()
25    @     0x7f9b214f03fb start_thread
26    @     0x7f9b1fd27c23 __GI___clone
27    @                0x0 (unknown)
  1. 主键模型增量 clone 转全量 clone 失败,导致一直 Clone 失败

I0127 00:46:02.271173  7878 snapshot_manager.cpp:112] make primary snapshot tablet:334728 cur_version:65905 missing_version_ranges:65662 timeout:180
I0127 00:46:02.271206  7878 tablet_updates.cpp:2954] get_rowsets_for_snapshot: too many rowsets for incremental clone #rowset:244 #rowset_for_full_clone:1 tablet:334728 #version:1 [65905.1 65905.1@0 65905.1] #pending:0
W0127 00:46:02.271214  7878 agent_server.cpp:308] fail to make_snapshot. tablet_id:334728 msg:Not found: get_rowsets_for_snapshot: too many rowsets for incremental clone #rowset:244 #rowset_for_full_clone:1 tablet:334728 #version:1 [65905.1 65905.1@0 65905.1] #pending:0
  • Github Issue:
  • Github Fix PR:
  • Jira:
  • 问题版本:
    • 2.3.0 ~ 2.3.7
    • 2.4.0 ~ 2.4.3
    • 2.5.0
  • 修复版本:
    • 2.3.8+
    • 2.4.4+
    • 2.5.1+
  • 临时规避方法:
    • 手动删除BE对应的Tablet
  • 问题原因:
    • 见 issue 描述
  1. 低基数BUG: Dict Decode failed

Dict Decode failed, Dict can't take cover all key :0
  1. 使用主键模型后,BE 重启失败

一般表现为进程在,但是端口不通,pstack 进程号 发现线程比较少,CPU 使用1个核打满,

典型的 pstack 堆栈

#14 0x0000000001b2745b in starrocks::TabletUpdates::init() ()
#15 0x0000000001ad711f in starrocks::Tablet::_init_once_action() ()
#16 0x0000000001ad734d in void std::call_once<starrocks::Status starrocks::StarRocksCall0nce<starrocks::Status>::call<starrocks::Tablet::init()::flambda()#1}>(starrocks::Tablet::init()::{lambda()#1})::{lambda()#1}>(std::once_flag&, starrocks::Tablet::init()::{lambda()#1}&&)::{lambda()#2}::_FUN() ()
#17 Θx00007f8fΘe6f3e40 in pthread_once () from /lib64/libpthread.so.Θ
#18 Θx0000000001acad51 in starrocks::Tablet::init() ()
#19 Θx0000000001ae5849 in starrocks::TabletManager::load_tablet_from_meta(starrocks::DataDir*, long, int, std::basic_string_view<char, std::char_traits<c har> >, bool, bool, bool, bool) ()
#20 0x0000000001ac7314 in std::_Function_handler<bool (long, long, std::basic_string_view<char, std::char_traits<char> >), starrocks::DataDir::load()::fl ambda(long, int, std::basic_string_view<char, std::char_traits<char> >)#2)>::_M_invoke(std::_Any_data const&, long&&:, std::_Any_data const&, std::basic_s tring_view<char, std::char_traits<char> >&&) ()
#21 0x0000000001af7535 in std:: Function handler<bool (std::basic string view<char, std::char traits<char> >, std::basic string view<char, std::char trai ts<char> >), starrocks::TabletMetaManager::walk(starrocks::KVStore*, std::function<bool (long, long, std::basic_string_view<char, std::char_traits<char> >)> const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >)#1}>::_M_invoke(std::_A ny_data const&, std::basic_string_view<char, std::char_traits<char> >&&, std::_Any_data const&) ()
#22 0x0000000001c95670 in starrocks::KVStore::iterate(starrocks::ColumnFamilyIndex, std::_cxx11::basic_string<char, std::char_traits<char>, std::allocat or<char> > const&, std::function<bool (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >)> con st&) ()
#23 Θx000000000laf9add in starrocks::TabletMetaManager::walk(starrocks::KVStore*, std::function<bool (long, long, std::basic_string_view<char, std::char) traits<char> >> const&) ()
#24 ΘxΘ000000001ac8a01 in starrocks::DataDir::load() ()
#25 0x0000000001ab1b56 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<starrocks::StorageEngine::load_data_dirs(std::vector<starrocks::DataD  ir*, std::allocator<starrocks::DataDir*> > const&)::{lambda()#1}> >>::_M_run() ()
#26 Θx0000000005b5f9f0 in execute_native_thread_routine ()
#27 Θx00007f8f0e6eedd5 in start_thread () from /lib64/libpthread.so.0
#28 Θx00007f8f0dd09ead in clone () from /lib64/libc.so.6
  1. Flink 导入 CSV 到 StarRocks 多了换行符

  1. local_shuffle crash

PC: @   0x4ccb226 starrocks::vectorized::Chunk::clone_empty_with_slot()
*** SIGSEGV (@0x0) received by PID 268757 (TID 0x7fc78adcc700) from PID 0; stack trace: ***
    @   0x5722822 google::(anonynous namespace)::FailureSignalHandler()
    @   0x7fc895dd9630 (unknown)
    @   0x4ccb226 starrocks::vectorized::Chunk::clone_empty_with_slot()
    @   0x4ccb953 starrocks::vectorized::Chunk::clone_empty_with_slot()
    @   0x30ec210 starrocks::pipeline::LocalExchangeSourceOperator::_pull_shuffle_chunk()
    @   0x30ecd67 starrocks::pipeline::LocalExchangeSourceOperator::pull_chunk()
    @   0x2c3fbe3 starrocks::pipeline::PipelineDriver::process()
    @   0x4dclbd7 starrocks::pipeline::GlobalDriverExecutor::_worker_thread()
    @   0x47d2acd starrocks::ThreadPool::dispatch_thread()
    @   0x47cd85a starrocks::Thread::supervise_thread()
    @   0x7fc895ddlea5 start_thread
    @   0x7fc8953ecb0d _clone
    @   0x0 (unknown)
  1. DumpStackTrace Crash

*** Aborted at 1678163575 (unix time) try "date -d @1678163575" if you are using GNU date ***
PC: @     0x7ff0c4cea00b gsignal
*** SIGABRT (@0x2b4) received by PID 692 (TID 0x7fef117b9700) from PID 692; stack trace: ***
    @          0x54d8a82 google::(anonymous namespace)::FailureSignalHandler()
    @     0x7ff0c4ead420 (unknown)
    @     0x7ff0c4cea00b gsignal
    @     0x7ff0c4cc9859 abort
    @          0x29f47de _ZN9__gnu_cxx27__verbose_terminate_handlerEv.cold
    @          0x7996116 __cxxabiv1::__terminate()
    @          0x7996181 std::terminate()
    @          0x79962d4 __cxa_throw
    @          0x29f46f6 _Znwm.cold
    @          0x7a0eb4a std::__cxx11::basic_string<>::_M_mutate()
    @          0x7a1016b std::__cxx11::basic_string<>::_M_append()
    @          0x54d5dbf google::DumpStackTrace()
    @          0x45d1c2c __wrap___cxa_throw
    @          0x29f46f6 _Znwm.cold
    @          0x7a0eb4a std::__cxx11::basic_string<>::_M_mutate()
    @          0x7a1016b std::__cxx11::basic_string<>::_M_append()
    @          0x54d5dbf google::DumpStackTrace()
    @          0x45d1c2c __wrap___cxa_throw
    @          0x29f46f6 _Znwm.cold
    @          0x7a0eb4a std::__cxx11::basic_string<>::_M_mutate()
    @          0x7a1016b std::__cxx11::basic_string<>::_M_append()
    @          0x54d5dbf google::DumpStackTrace()
    @          0x45d1c2c __wrap___cxa_throw
    @          0x29f46f6 _Znwm.cold
    @          0x7a0eb4a std::__cxx11::basic_string<>::_M_mutate()
    @          0x7a1016b std::__cxx11::basic_string<>::_M_append()
    @          0x54d5dbf google::DumpStackTrace()
    @          0x45d1c2c __wrap___cxa_throw
    @          0x29f46f6 _Znwm.cold
    @          0x7a0eb4a std::__cxx11::basic_string<>::_M_mutate()
    @          0x7a1016b std::__cxx11::basic_string<>::_M_append()
    @          0x54d5dbf google::DumpStackTrace()

这个问题在2.3.10版本也存在,已经提 pr backport了

2赞