From: Josh Steadmon <steadmon@google.com>
To: git@vger.kernel.org
Subject: [PATCH v2 00/11] Advertise trace2 SID in protocol capabilities
Date: Mon, 2 Nov 2020 14:30:58 -0800 [thread overview]
Message-ID: <cover.1604355792.git.steadmon@google.com> (raw)
In-Reply-To: <cover.1604006121.git.steadmon@google.com>
In order to more easily debug remote operations, it is useful to be able
to inspect both client-side and server-side traces. This series allows
clients to record the server's trace2 session ID, and vice versa, by
advertising the SID in a new "trace2-sid" protocol capability.
Changes since V1:
* Added a public trace2_session_id() function to trace2.{h,c}. Used this
in place of tr2_sid_get().
* Fixed a style issue regarding using NULL rather than 0.
Josh Steadmon (11):
docs: new capability to advertise trace2 SIDs
docs: new trace2.advertiseSID option
trace2: add a public function for getting the SID
upload-pack: advertise trace2 SID in v0 capabilities
receive-pack: advertise trace2 SID in v0 capabilities
serve: advertise trace2 SID in v2 capabilities
transport: log received server trace2 SID
fetch-pack: advertise trace2 SID in capabilities
upload-pack, serve: log received client trace2 SID
send-pack: advertise trace2 SID in capabilities
receive-pack: log received client trace2 SID
Documentation/config/trace2.txt | 4 +
.../technical/protocol-capabilities.txt | 13 ++-
Documentation/technical/protocol-v2.txt | 9 +++
builtin/receive-pack.c | 15 ++++
fetch-pack.c | 10 +++
send-pack.c | 8 ++
serve.c | 18 +++++
t/t5705-trace2-sid-in-capabilities.sh | 79 +++++++++++++++++++
trace2.c | 5 ++
trace2.h | 2 +
transport.c | 10 +++
upload-pack.c | 22 +++++-
12 files changed, 192 insertions(+), 3 deletions(-)
create mode 100755 t/t5705-trace2-sid-in-capabilities.sh
Range-diff against v1:
-: ---------- > 1: d04028c3c7 docs: new capability to advertise trace2 SIDs
-: ---------- > 2: 5d5097b671 docs: new trace2.advertiseSID option
-: ---------- > 3: 7f42aacd2b trace2: add a public function for getting the SID
1: c07bf8aede ! 4: 4912af5f2b upload-pack: advertise trace2 SID in v0 capabilities
@@ Commit message
## upload-pack.c ##
-@@
- #include "commit-graph.h"
- #include "commit-reach.h"
- #include "shallow.h"
-+#include "trace2/tr2_sid.h"
-
- /* Remember to update object flag allocation in object.h */
- #define THEY_HAVE (1u << 11)
@@ upload-pack.c: struct upload_pack_data {
unsigned done : 1; /* v2 only */
unsigned allow_ref_in_want : 1; /* v2 only */
@@ upload-pack.c: static void format_symref_info(struct strbuf *buf, struct string_
+static void format_trace2_info(struct strbuf *buf, struct upload_pack_data *d) {
+ if (d->advertise_trace2_sid && trace2_is_enabled())
-+ strbuf_addf(buf, " trace2-sid=%s", tr2_sid_get());
++ strbuf_addf(buf, " trace2-sid=%s", trace2_session_id());
+}
+
static int send_ref(const char *refname, const struct object_id *oid,
2: d42118ac41 ! 5: 7003189c81 receive-pack: advertise trace2 SID in v0 capabilities
@@ Commit message
## builtin/receive-pack.c ##
-@@
- #include "commit-reach.h"
- #include "worktree.h"
- #include "shallow.h"
-+#include "trace2/tr2_sid.h"
-
- static const char * const receive_pack_usage[] = {
- N_("git receive-pack <git-dir>"),
@@ builtin/receive-pack.c: static int receive_unpack_limit = -1;
static int transfer_unpack_limit = -1;
static int advertise_atomic_push = 1;
@@ builtin/receive-pack.c: static void show_ref(const char *path, const struct obje
if (advertise_push_options)
strbuf_addstr(&cap, " push-options");
+ if (advertise_trace2_sid && trace2_is_enabled())
-+ strbuf_addf(&cap, " trace2-sid=%s", tr2_sid_get());
++ strbuf_addf(&cap, " trace2-sid=%s", trace2_session_id());
strbuf_addf(&cap, " object-format=%s", the_hash_algo->name);
strbuf_addf(&cap, " agent=%s", git_user_agent_sanitized());
packet_write_fmt(1, "%s %s%c%s\n",
3: ff80f70d33 ! 6: 9573428cc0 serve: advertise trace2 SID in v2 capabilities
@@ Commit message
## serve.c ##
@@
- #include "ls-refs.h"
#include "serve.h"
#include "upload-pack.h"
-+#include "trace2/tr2_sid.h"
-+
-+static int advertise_trace2_sid;
++static int advertise_trace2_sid;
++
static int always_advertise(struct repository *r,
struct strbuf *value)
+ {
@@ serve.c: static int object_format_advertise(struct repository *r,
return 1;
}
@@ serve.c: static int object_format_advertise(struct repository *r,
+ if (!advertise_trace2_sid || !trace2_is_enabled())
+ return 0;
+ if (value)
-+ strbuf_addstr(value, tr2_sid_get());
++ strbuf_addstr(value, trace2_session_id());
+ return 1;
+}
+
4: 1519767ead = 7: 21bdbf23f3 transport: log received server trace2 SID
5: ee4b3a7a55 ! 8: 11b5b1b54f fetch-pack: advertise trace2 SID in capabilities
@@ Commit message
## fetch-pack.c ##
-@@
- #include "fetch-negotiator.h"
- #include "fsck.h"
- #include "shallow.h"
-+#include "trace2/tr2_sid.h"
-
- static int transfer_unpack_limit = -1;
- static int fetch_unpack_limit = -1;
@@ fetch-pack.c: static int fetch_fsck_objects = -1;
static int transfer_fsck_objects = -1;
static int agent_supported;
@@ fetch-pack.c: static int find_common(struct fetch_negotiator *negotiator,
if (agent_supported) strbuf_addf(&c, " agent=%s",
git_user_agent_sanitized());
+ if (advertise_trace2_sid && server_sent_trace2_sid && trace2_is_enabled())
-+ strbuf_addf(&c, " trace2-sid=%s", tr2_sid_get());
++ strbuf_addf(&c, " trace2-sid=%s", trace2_session_id());
if (args->filter_options.choice)
strbuf_addstr(&c, " filter");
packet_buf_write(&req_buf, "want %s%s\n", remote_hex, c.buf);
@@ fetch-pack.c: static int send_fetch_request(struct fetch_negotiator *negotiator,
if (server_supports_v2("agent", 0))
packet_buf_write(&req_buf, "agent=%s", git_user_agent_sanitized());
+ if (advertise_trace2_sid && server_supports_v2("trace2-sid", 0) && trace2_is_enabled())
-+ packet_buf_write(&req_buf, "trace2-sid=%s", tr2_sid_get());
++ packet_buf_write(&req_buf, "trace2-sid=%s", trace2_session_id());
if (args->server_options && args->server_options->nr &&
server_supports_v2("server-option", 1)) {
int i;
6: b160941c65 ! 9: 23f44bc904 upload-pack, serve: log received client trace2 SID
@@ upload-pack.c: static void receive_needs(struct upload_pack_data *data,
if (data->allow_filter &&
parse_feature_request(features, "filter"))
data->filter_capability_requested = 1;
-+ if ((arg = parse_feature_value(features, "trace2-sid", &feature_len, 0)))
++ if ((arg = parse_feature_value(features, "trace2-sid", &feature_len, NULL)))
+ {
+ char *client_sid = xstrndup(arg, feature_len);
+ trace2_data_string("trace2", NULL, "client-sid", client_sid);
7: 609958bd1a ! 10: c0b1ffc6d8 send-pack: advertise trace2 SID in capabilities
@@ Commit message
## send-pack.c ##
-@@
- #include "gpg-interface.h"
- #include "cache.h"
- #include "shallow.h"
-+#include "trace2/tr2_sid.h"
-
- int option_parse_push_signed(const struct option *opt,
- const char *arg, int unset)
@@ send-pack.c: int send_pack(struct send_pack_args *args,
int use_sideband = 0;
int quiet_supported = 0;
@@ send-pack.c: int send_pack(struct send_pack_args *args,
if (agent_supported)
strbuf_addf(&cap_buf, " agent=%s", git_user_agent_sanitized());
+ if (advertise_trace2_sid && server_sent_trace2_sid && trace2_is_enabled())
-+ strbuf_addf(&cap_buf, " trace2-sid=%s", tr2_sid_get());
++ strbuf_addf(&cap_buf, " trace2-sid=%s", trace2_session_id());
/*
* NEEDSWORK: why does delete-refs have to be so specific to
8: 3bc412fc39 = 11: c47eddd9df receive-pack: log received client trace2 SID
--
2.29.1.341.ge80a0c044ae-goog
next prev parent reply other threads:[~2020-11-02 22:31 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-29 21:32 [PATCH 00/10] Advertise trace2 SID in protocol capabilities Josh Steadmon
2020-10-29 21:32 ` [PATCH 01/10] docs: new capability to advertise trace2 SIDs Josh Steadmon
2020-10-29 21:32 ` [PATCH 02/10] docs: new trace2.advertiseSID option Josh Steadmon
2020-10-29 21:32 ` [PATCH 03/10] upload-pack: advertise trace2 SID in v0 capabilities Josh Steadmon
2020-10-29 21:32 ` [PATCH 04/10] receive-pack: " Josh Steadmon
2020-10-29 21:32 ` [PATCH 05/10] serve: advertise trace2 SID in v2 capabilities Josh Steadmon
2020-10-29 21:32 ` [PATCH 06/10] transport: log received server trace2 SID Josh Steadmon
2020-10-29 21:32 ` [PATCH 07/10] fetch-pack: advertise trace2 SID in capabilities Josh Steadmon
2020-10-29 21:32 ` [PATCH 08/10] upload-pack, serve: log received client trace2 SID Josh Steadmon
2020-10-29 21:32 ` [PATCH 09/10] send-pack: advertise trace2 SID in capabilities Josh Steadmon
2020-10-29 21:32 ` [PATCH 10/10] receive-pack: log received client trace2 SID Josh Steadmon
2020-10-30 15:54 ` [PATCH 00/10] Advertise trace2 SID in protocol capabilities Jeff Hostetler
2020-11-02 22:20 ` Josh Steadmon
2020-11-03 21:22 ` Junio C Hamano
2020-11-05 21:01 ` Jeff Hostetler
2020-11-10 21:37 ` Josh Steadmon
2020-10-30 22:31 ` Junio C Hamano
2020-11-02 22:30 ` Josh Steadmon [this message]
2020-11-02 22:30 ` [PATCH v2 01/11] docs: new capability to advertise trace2 SIDs Josh Steadmon
2020-11-03 21:33 ` Junio C Hamano
2020-11-05 21:00 ` Jeff Hostetler
2020-11-12 14:05 ` Ævar Arnfjörð Bjarmason
2020-11-12 17:32 ` Junio C Hamano
2020-11-12 22:10 ` Jeff Hostetler
2020-11-11 22:40 ` Josh Steadmon
2020-11-02 22:31 ` [PATCH v2 02/11] docs: new trace2.advertiseSID option Josh Steadmon
2020-11-03 21:42 ` Junio C Hamano
2020-11-05 19:28 ` Josh Steadmon
2020-11-05 21:24 ` Junio C Hamano
2020-11-06 11:57 ` Johannes Schindelin
2020-11-02 22:31 ` [PATCH v2 03/11] trace2: add a public function for getting the SID Josh Steadmon
2020-11-02 22:31 ` [PATCH v2 04/11] upload-pack: advertise trace2 SID in v0 capabilities Josh Steadmon
2020-11-03 21:48 ` Junio C Hamano
2020-11-05 18:44 ` Josh Steadmon
2020-11-02 22:31 ` [PATCH v2 05/11] receive-pack: " Josh Steadmon
2020-11-02 22:31 ` [PATCH v2 06/11] serve: advertise trace2 SID in v2 capabilities Josh Steadmon
2020-11-04 21:11 ` Junio C Hamano
2020-11-02 22:31 ` [PATCH v2 07/11] transport: log received server trace2 SID Josh Steadmon
2020-11-04 21:14 ` Junio C Hamano
2020-11-11 22:53 ` Josh Steadmon
2020-11-12 21:30 ` Jeff Hostetler
2020-11-02 22:31 ` [PATCH v2 08/11] fetch-pack: advertise trace2 SID in capabilities Josh Steadmon
2020-11-04 21:22 ` Junio C Hamano
2020-11-05 18:58 ` Josh Steadmon
2020-11-05 19:21 ` Junio C Hamano
2020-11-11 23:32 ` Josh Steadmon
2020-11-02 22:31 ` [PATCH v2 09/11] upload-pack, serve: log received client trace2 SID Josh Steadmon
2020-11-04 21:26 ` Junio C Hamano
2020-11-05 19:12 ` Josh Steadmon
2020-11-02 22:31 ` [PATCH v2 10/11] send-pack: advertise trace2 SID in capabilities Josh Steadmon
2020-11-02 22:31 ` [PATCH v2 11/11] receive-pack: log received client trace2 SID Josh Steadmon
2020-11-03 1:02 ` [PATCH v2 00/11] Advertise trace2 SID in protocol capabilities Junio C Hamano
2020-11-11 23:29 ` [PATCH v3 00/11] Advertise session ID " Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 01/11] docs: new capability to advertise session IDs Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 02/11] docs: new transfer.advertiseSID option Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 03/11] trace2: add a public function for getting the SID Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 04/11] upload-pack: advertise session ID in v0 capabilities Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 05/11] receive-pack: " Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 06/11] serve: advertise session ID in v2 capabilities Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 07/11] transport: log received server session ID Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 08/11] fetch-pack: advertise session ID in capabilities Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 09/11] upload-pack, serve: log received client session ID Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 10/11] send-pack: advertise session ID in capabilities Josh Steadmon
2020-11-11 23:29 ` [PATCH v3 11/11] receive-pack: log received client session ID Josh Steadmon
2020-11-25 22:08 ` [PATCH v3 00/11] Advertise session ID in protocol capabilities Junio C Hamano
2020-11-25 22:56 ` Josh Steadmon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1604355792.git.steadmon@google.com \
--to=steadmon@google.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.