[PATCH 2/2] send-pack: add new tracing regions for push
- From
Josh Steadmon <steadmon@google.com>
- Date
- Aug 15, 2024, 18:51 UTC
- Message-ID
- <d57f258026f941e7bc05de8dac359fc1e2e42bee.1723747832.git.steadmon@google.com>
- In-Reply-To
- <cover.1723747832.git.steadmon@google.com>
From: Calvin Wan <calvinwan@google.com>
At $DAYJOB we experienced some slow pushes and needed additional trace data to diagnose them.
Add trace2 regions for various sections of send_pack().
Signed-off-by: Josh Steadmon <steadmon@google.com> --- send-pack.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/send-pack.c b/send-pack.c index fa2f5eec17..de8ba46ad5 100644 --- a/send-pack.c +++ b/send-pack.c @@ -512,8 +512,11 @@ int send_pack(struct send_pack_args *args, } git_config_get_bool("push.negotiate", &push_negotiate); - if (push_negotiate) + if (push_negotiate) { + trace2_region_enter("send_pack", "push_negotiate", the_repository); get_commons_through_negotiation(args->url, remote_refs, &commons); + trace2_region_leave("send_pack", "push_negotiate", the_repository); + } if (!git_config_get_bool("push.usebitmaps", &use_bitmaps)) args->disable_bitmaps = !use_bitmaps; @@ -641,10 +644,12 @@ int send_pack(struct send_pack_args *args, /* * Finally, tell the other end! */ - if (!args->dry_run && push_cert_nonce) + if (!args->dry_run && push_cert_nonce) { + trace2_region_enter("send_pack", "push_cert", the_repository); cmds_sent = generate_push_cert(&req_buf, remote_refs, args, cap_buf.buf, push_cert_nonce); - else if (!args->dry_run) + trace2_region_leave("send_pack", "push_cert", the_repository); + } else if (!args->dry_run) { for (ref = remote_refs; ref; ref = ref->next) { char *old_hex, *new_hex; @@ -664,6 +669,7 @@ int send_pack(struct send_pack_args *args, old_hex, new_hex, ref->name); } } + } if (use_push_options) { struct string_list_item *item; @@ -686,6 +692,7 @@ int send_pack(struct send_pack_args *args, strbuf_release(&cap_buf); if (use_sideband && cmds_sent) { + trace2_region_enter("send_pack", "sideband_demux", the_repository); memset(&demux, 0, sizeof(demux)); demux.proc = sideband_demux; demux.data = fd; @@ -719,6 +726,8 @@ int send_pack(struct send_pack_args *args, if (use_sideband) { close(demux.out); finish_async(&demux); + if (cmds_sent) + trace2_region_leave("send_pack", "sideband_demux", the_repository); } fd[1] = -1; return -1; @@ -743,6 +752,7 @@ int send_pack(struct send_pack_args *args, error("error in sideband demultiplexer"); ret = -1; } + trace2_region_leave("send_pack", "sideband_demux", the_repository); } if (ret < 0)
-- 2.46.0.184.g6999bdac58-goog