send-pack: add new tracing regions for push

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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Calvin Wan 2024-08-22 14:57:47 -07:00 committed by Junio C Hamano
parent a45ab54987
commit db5281276e
1 changed files with 13 additions and 3 deletions

View File

@ -75,6 +75,7 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *advertised,
int i; int i;
int rc; int rc;


trace2_region_enter("send_pack", "pack_objects", the_repository);
strvec_push(&po.args, "pack-objects"); strvec_push(&po.args, "pack-objects");
strvec_push(&po.args, "--all-progress-implied"); strvec_push(&po.args, "--all-progress-implied");
strvec_push(&po.args, "--revs"); strvec_push(&po.args, "--revs");
@ -146,8 +147,10 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *advertised,
*/ */
if (rc > 128 && rc != 141) if (rc > 128 && rc != 141)
error("pack-objects died of signal %d", rc - 128); error("pack-objects died of signal %d", rc - 128);
trace2_region_leave("send_pack", "pack_objects", the_repository);
return -1; return -1;
} }
trace2_region_leave("send_pack", "pack_objects", the_repository);
return 0; return 0;
} }


@ -170,6 +173,7 @@ static int receive_status(struct packet_reader *reader, struct ref *refs)
int new_report = 0; int new_report = 0;
int once = 0; int once = 0;


trace2_region_enter("send_pack", "receive_status", the_repository);
hint = NULL; hint = NULL;
ret = receive_unpack_status(reader); ret = receive_unpack_status(reader);
while (1) { while (1) {
@ -268,6 +272,7 @@ static int receive_status(struct packet_reader *reader, struct ref *refs)
new_report = 1; new_report = 1;
} }
} }
trace2_region_leave("send_pack", "receive_status", the_repository);
return ret; return ret;
} }


@ -512,8 +517,11 @@ int send_pack(struct send_pack_args *args,
} }


git_config_get_bool("push.negotiate", &push_negotiate); 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); 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)) if (!git_config_get_bool("push.usebitmaps", &use_bitmaps))
args->disable_bitmaps = !use_bitmaps; args->disable_bitmaps = !use_bitmaps;
@ -641,10 +649,11 @@ int send_pack(struct send_pack_args *args,
/* /*
* Finally, tell the other end! * Finally, tell the other end!
*/ */
if (!args->dry_run && push_cert_nonce) if (!args->dry_run && push_cert_nonce) {
cmds_sent = generate_push_cert(&req_buf, remote_refs, args, cmds_sent = generate_push_cert(&req_buf, remote_refs, args,
cap_buf.buf, push_cert_nonce); cap_buf.buf, push_cert_nonce);
else if (!args->dry_run) trace2_printf("Generated push certificate");
} else if (!args->dry_run) {
for (ref = remote_refs; ref; ref = ref->next) { for (ref = remote_refs; ref; ref = ref->next) {
char *old_hex, *new_hex; char *old_hex, *new_hex;


@ -664,6 +673,7 @@ int send_pack(struct send_pack_args *args,
old_hex, new_hex, ref->name); old_hex, new_hex, ref->name);
} }
} }
}


if (use_push_options) { if (use_push_options) {
struct string_list_item *item; struct string_list_item *item;