I find the root cause
(1) client :
send post with data(HEADER frame without END_STREAM flag and DATA frame with END_STREAM flag)
(2) server config
location {
return 200 "simple return";
}
(3) Once the Nginx receives the HEADER frame, it call http rewrite module to process request and then the call ngx_http_finalize_connection->ngx_http_v2_close_stream to close stream before DATA frame is processed.
Thus, for client it has send the END_STREAM flag but for server it hasn't received it. So function ngx_http_v2_send_window_update will be called in function ngx_http_v2_close_stream.