]> git.ipfire.org Git - thirdparty/git.git/commitdiff
send-pack: add new tracing regions for push
authorCalvin Wan <calvinwan@google.com>
Thu, 22 Aug 2024 21:57:47 +0000 (14:57 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 22 Aug 2024 22:02:32 +0000 (15:02 -0700)
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>
send-pack.c

index fa2f5eec17bba157f543a9233a36a73fb76af9aa..9666b2c995cbb0462084b6ac569743794db05058 100644 (file)
@@ -75,6 +75,7 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *advertised,
        int i;
        int rc;
 
+       trace2_region_enter("send_pack", "pack_objects", the_repository);
        strvec_push(&po.args, "pack-objects");
        strvec_push(&po.args, "--all-progress-implied");
        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)
                        error("pack-objects died of signal %d", rc - 128);
+               trace2_region_leave("send_pack", "pack_objects", the_repository);
                return -1;
        }
+       trace2_region_leave("send_pack", "pack_objects", the_repository);
        return 0;
 }
 
@@ -170,6 +173,7 @@ static int receive_status(struct packet_reader *reader, struct ref *refs)
        int new_report = 0;
        int once = 0;
 
+       trace2_region_enter("send_pack", "receive_status", the_repository);
        hint = NULL;
        ret = receive_unpack_status(reader);
        while (1) {
@@ -268,6 +272,7 @@ static int receive_status(struct packet_reader *reader, struct ref *refs)
                        new_report = 1;
                }
        }
+       trace2_region_leave("send_pack", "receive_status", the_repository);
        return ret;
 }
 
@@ -512,8 +517,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 +649,11 @@ 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) {
                cmds_sent = generate_push_cert(&req_buf, remote_refs, args,
                                               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) {
                        char *old_hex, *new_hex;
 
@@ -664,6 +673,7 @@ int send_pack(struct send_pack_args *args,
                                                 old_hex, new_hex, ref->name);
                        }
                }
+       }
 
        if (use_push_options) {
                struct string_list_item *item;