git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 01/11] docs: new capability to advertise trace2 SIDs

From
JHJeff Hostetler <git@jeffhostetler.com>
Date
Nov 12, 2020, 22:10 UTC
Message-ID
<1b044820-2616-36f4-9d0b-368a74b9d125@jeffhostetler.com>
In-Reply-To
<xmqqo8k2jxa2.fsf@gitster.c.googlers.com>
On 11/12/20 12:32 PM, Junio C Hamano wrote:
Show 7 quoted lines
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
> 
>> AFAICT the way it's documented now is the "is the session-id[...]"
>> paragraph in api-trace2.txt.
>>
>> I'd like to see us document the implementation a bit better and
>> explicitly support the "hack" of setting GIT_TRACE2_PARENT_SID=hello.

I've occasionally used that hack for control/experiment-type testing, but not that often.

I was more pointing out that I had to use that environment inheritance mechanism so that child processes can be associated with their Git process ancestry. And so it is possible for someone to abuse that mechanism for other purposes (and introduce injections into what Josh is proposing).

Show 17 quoted lines
>>
>> I.e. maybe I've missed something but we just say "session-id is
>> prepended with the session-id of the parent" but don't mention that we
>> separate them with slashes, so you can split on that to get the depth &
>> individual ID's.
>>
>> My reading of the updated doc patch in v3 is that not allowing
>> "non-printable or whitespace" allows you to e.g. have slashes in those
>> custom session IDs, which would be quite inconvenient since it would
>> break that property.
> 
> A few things I want to see stakeholders agree on:
> 
>   - In "a/b/c", what's the "session ID" of the leaf child process?
>     "a/b/c"?  or "c"?  If the former (which is what I am guessing),
>     do we have name to refer to "b" or "c" alone (if not, we should
>     have one)?

I consider a process' SID to be the complete "a/b/c" string. But I do know that when I look at my logging data, that I will also find data for a process with SID of "a" and data for another process with SID "a/b".

So perhaps we should have names for:
     [1] "a/b/c"  -- my process' complete SID name
     [2] "c"      -- my process' SID component name
     [3] "a/b"    -- my parent's complete SID name
Show 8 quoted lines
> 
>   - Do we encourage/force other implementations of Git protocol to
>     adopt a similar "slash-separated non-whitespace ASCII printable"
>     structure?  I do not think such a structure is too limiting but
>     others may feel differently.  Or is a "session ID" supposed to be
>     an opaque token without any structure, and upon seeing "a/b/c"
>     the recipient should not read anything into its slash, or any
>     relation  with another session whose ID is "a/b/d"?

When analyzing Git perf data, there are times when you basically want to "SELECT * where SID startswith 'a/b/' ..." and summarize over the child processes of "a/b". So data from "a/b/c" and "a/b/d" would be aggregated. (I do have some of that data in the "child_exit" events reported for the "a/b" process, but sometimes you need to actually see the records for the child processes.)

So I guess I'm saying that the hierarchy has been useful and we should try to keep it as is.

Show 8 quoted lines
> 
>> And we should explicitly support the GIT_TRACE2_PARENT_SID=* setting
>> from an external process, and make the SID definition loose enough to
>> allow for SIDs that don't look like Git's in that chain. I.e. a useful
>> property (and one I've seen in the wild) is to have some external
>> programt that already has SIDs/UUID run IDs spawn git, setting
>> GIT_TRACE2_PARENT_SID=<that program's SID> makes things convenient for
>> the purposes of logging.n

Yes, it can be useful for external tools that drive Git to be able to set a SID prefix to help track that into Git process.

Likewise, it would be nice to add code to some of the Git shell script commands (such as git-mergetool and git-prompt) to augment the SID being passed to child Git commands to help track why they are being invoked.

Jeff
Previous: Junio C HamanoNext: Josh Steadmon
Message 29 of 66 in “Advertise trace2 SID in protocol capabilities”
  1. 00/10 Advertise trace2 SID in protocol capabilitiesJosh Steadmon, Oct 29, 2020
  2. 01/10 docs: new capability to advertise trace2 SIDsJosh Steadmon, Oct 29, 2020
  3. 02/10 docs: new trace2.advertiseSID optionJosh Steadmon, Oct 29, 2020
  4. 03/10 upload-pack: advertise trace2 SID in v0 capabilitiesJosh Steadmon, Oct 29, 2020
  5. 05/10 serve: advertise trace2 SID in v2 capabilitiesJosh Steadmon, Oct 29, 2020
  6. 04/10 receive-pack: advertise trace2 SID in v0 capabilitiesJosh Steadmon, Oct 29, 2020
  7. 06/10 transport: log received server trace2 SIDJosh Steadmon, Oct 29, 2020
  8. 07/10 fetch-pack: advertise trace2 SID in capabilitiesJosh Steadmon, Oct 29, 2020
  9. 08/10 upload-pack, serve: log received client trace2 SIDJosh Steadmon, Oct 29, 2020
  10. 09/10 send-pack: advertise trace2 SID in capabilitiesJosh Steadmon, Oct 29, 2020
  11. 10/10 receive-pack: log received client trace2 SIDJosh Steadmon, Oct 29, 2020
  12. Jeff HostetlerOct 30, 2020
  13. Josh SteadmonNov 2, 2020
  14. Junio C HamanoNov 3, 2020
  15. Jeff HostetlerNov 5, 2020
  16. Josh SteadmonNov 10, 2020
  17. Junio C HamanoOct 30, 2020
  18. 00/11 Advertise trace2 SID in protocol capabilitiesJosh Steadmon, Nov 2, 2020
  19. 02/11 docs: new trace2.advertiseSID optionJosh Steadmon, Nov 2, 2020
  20. Junio C HamanoNov 3, 2020
  21. Josh SteadmonNov 5, 2020
  22. Junio C HamanoNov 5, 2020
  23. Johannes SchindelinNov 6, 2020
  24. 01/11 docs: new capability to advertise trace2 SIDsJosh Steadmon, Nov 2, 2020
  25. Junio C HamanoNov 3, 2020
  26. Jeff HostetlerNov 5, 2020
  27. Ævar Arnfjörð BjarmasonNov 12, 2020
  28. Junio C HamanoNov 12, 2020
  29. Jeff HostetlerNov 12, 2020
  30. Josh SteadmonNov 11, 2020
  31. 03/11 trace2: add a public function for getting the SIDJosh Steadmon, Nov 2, 2020
  32. 05/11 receive-pack: advertise trace2 SID in v0 capabilitiesJosh Steadmon, Nov 2, 2020
  33. 04/11 upload-pack: advertise trace2 SID in v0 capabilitiesJosh Steadmon, Nov 2, 2020
  34. Junio C HamanoNov 3, 2020
  35. Josh SteadmonNov 5, 2020
  36. 06/11 serve: advertise trace2 SID in v2 capabilitiesJosh Steadmon, Nov 2, 2020
  37. Junio C HamanoNov 4, 2020
  38. 07/11 transport: log received server trace2 SIDJosh Steadmon, Nov 2, 2020
  39. Junio C HamanoNov 4, 2020
  40. Josh SteadmonNov 11, 2020
  41. Jeff HostetlerNov 12, 2020
  42. 08/11 fetch-pack: advertise trace2 SID in capabilitiesJosh Steadmon, Nov 2, 2020
  43. Junio C HamanoNov 4, 2020
  44. Josh SteadmonNov 5, 2020
  45. Junio C HamanoNov 5, 2020
  46. Josh SteadmonNov 11, 2020
  47. 09/11 upload-pack, serve: log received client trace2 SIDJosh Steadmon, Nov 2, 2020
  48. Junio C HamanoNov 4, 2020
  49. Josh SteadmonNov 5, 2020
  50. 10/11 send-pack: advertise trace2 SID in capabilitiesJosh Steadmon, Nov 2, 2020
  51. 11/11 receive-pack: log received client trace2 SIDJosh Steadmon, Nov 2, 2020
  52. Junio C HamanoNov 3, 2020
  53. 00/11 Advertise session ID in protocol capabilitiesJosh Steadmon, Nov 11, 2020
  54. 06/11 serve: advertise session ID in v2 capabilitiesJosh Steadmon, Nov 11, 2020
  55. 08/11 fetch-pack: advertise session ID in capabilitiesJosh Steadmon, Nov 11, 2020
  56. 07/11 transport: log received server session IDJosh Steadmon, Nov 11, 2020
  57. 10/11 send-pack: advertise session ID in capabilitiesJosh Steadmon, Nov 11, 2020
  58. 09/11 upload-pack, serve: log received client session IDJosh Steadmon, Nov 11, 2020
  59. 11/11 receive-pack: log received client session IDJosh Steadmon, Nov 11, 2020
  60. 05/11 receive-pack: advertise session ID in v0 capabilitiesJosh Steadmon, Nov 11, 2020
  61. 04/11 upload-pack: advertise session ID in v0 capabilitiesJosh Steadmon, Nov 11, 2020
  62. 03/11 trace2: add a public function for getting the SIDJosh Steadmon, Nov 11, 2020
  63. 02/11 docs: new transfer.advertiseSID optionJosh Steadmon, Nov 11, 2020
  64. 01/11 docs: new capability to advertise session IDsJosh Steadmon, Nov 11, 2020
  65. Junio C HamanoNov 25, 2020
  66. Josh SteadmonNov 25, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.