cherry-pick 3502a81989e6589bd82054038c6d8cb2928e5d8c