Clean rebase of nankingjing's #5423 (rebase-first). Co-authored-by: nankingjing <nankingjing@users.noreply.github.com>