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

[RFC PATCH v3 0/3] trace2: don't overload target directories

From
Josh Steadmon <steadmon@google.com>
Date
Sep 14, 2019, 00:25 UTC
Message-ID
<cover.1568419818.git.steadmon@google.com>
In-Reply-To
<99e4a0fe409a236d210d95e54cd03fce61daa291.1564438745.git.steadmon@google.com>

This is still RFC, as I still haven't done performance testing yet. I'm mainly looking for feedback right now on patch 3/3, which extends the tr2_dst API with an optional function to write a custom message into the overload sentinel file.

Changes since V2:
* Added a new patch (3/3) that allows the different trace2 targets to
  write custom messages to the overload sentinel file.
* Added a new "overload" trace2 event type.
* Bumped up the trace2 event format version.
* Moved the test from t0210 to t0212, so that we can test the custom
  writer for the event target at the same time.
* Removed some unnecessary sanity-checking in the test.
* Fixed a coccicheck complaint about strbuf_addbuf.
* Used hardcoded file modes to be consistent with the rest of the
  project.
Josh Steadmon (3):
  docs: mention trace2 target-dir mode in git-config
  trace2: don't overload target directories
  trace2: write overload message to sentinel files
 Documentation/config/trace2.txt        |   6 ++
 Documentation/technical/api-trace2.txt |  24 +++--
 Documentation/trace2-target-values.txt |   4 +-
 t/t0212-trace2-event.sh                |  17 ++++
 trace2/tr2_dst.c                       | 118 +++++++++++++++++++++++++
 trace2/tr2_dst.h                       |   3 +
 trace2/tr2_sysenv.c                    |   3 +
 trace2/tr2_sysenv.h                    |   2 +
 trace2/tr2_tgt_event.c                 |  21 ++++-
 trace2/tr2_tgt_normal.c                |   2 +-
 trace2/tr2_tgt_perf.c                  |   2 +-
 11 files changed, 191 insertions(+), 11 deletions(-)
Range-diff against v2:
1:  65e05a3db5 = 1:  eacffe250d docs: mention trace2 target-dir mode in git-config
2:  f897a11068 ! 2:  bf20ec8ea2 trace2: don't overload target directories
    @@ Documentation/config/trace2.txt: trace2.destinationDebug::
     +	write a sentinel file that will block further tracing to this
     +	directory. Defaults to 0, which disables this check.
     
    - ## t/t0210-trace2-normal.sh ##
    -@@ t/t0210-trace2-normal.sh: test_expect_success 'using global config with include' '
    + ## t/t0212-trace2-event.sh ##
    +@@ t/t0212-trace2-event.sh: test_expect_success JSON_PP 'using global config, event stream, error event' '
      	test_cmp expect actual
      '
      
    @@ t/t0210-trace2-normal.sh: test_expect_success 'using global config with include'
     +		test_seq $GIT_TRACE2_MAX_FILES >../expected_filenames.txt &&
     +		xargs touch <../expected_filenames.txt &&
     +		cd .. &&
    -+		ls trace_target_dir >first_ls_output.txt &&
    -+		test_cmp expected_filenames.txt first_ls_output.txt &&
    -+		GIT_TRACE2="$(pwd)/trace_target_dir" test-tool trace2 001return 0
    ++		GIT_TRACE2_EVENT="$(pwd)/trace_target_dir" test-tool trace2 001return 0
     +	) &&
     +	echo git-trace2-overload >>expected_filenames.txt &&
    -+	ls trace_target_dir >second_ls_output.txt &&
    -+	test_cmp expected_filenames.txt second_ls_output.txt
    ++	ls trace_target_dir >ls_output.txt &&
    ++	test_cmp expected_filenames.txt ls_output.txt
     +'
     +
      test_done
    @@ trace2/tr2_dst.c: void tr2_dst_trace_disable(struct tr2_dst *dst)
     +	}
     +
     +	/* check sentinel */
    -+	strbuf_addstr(&sentinel_path, path.buf);
    ++	strbuf_addbuf(&sentinel_path, &path);
     +	strbuf_addstr(&sentinel_path, OVERLOAD_SENTINEL_NAME);
     +	if (!stat(sentinel_path.buf, &statbuf)) {
     +		ret = 1;
    @@ trace2/tr2_dst.c: void tr2_dst_trace_disable(struct tr2_dst *dst)
     +		closedir(dirp);
     +
     +	if (file_count >= tr2env_max_files) {
    -+		creat(sentinel_path.buf, S_IRUSR | S_IWUSR);
    ++		creat(sentinel_path.buf, 0666);
     +		ret = 1;
     +		goto cleanup;
     +	}
-:  ---------- > 3:  bab45cb735 trace2: write overload message to sentinel files
-- 
2.23.0.237.gc6a4ce50a0-goog
Previous: Josh SteadmonNext: Josh Steadmon
Message 16 of 40 in “trace2: don't overload target directories”
  1. trace2: don't overload target directoriesJosh Steadmon, Jul 29, 2019
  2. Derrick StoleeJul 30, 2019
  3. Josh SteadmonJul 30, 2019
  4. Jeff HostetlerJul 30, 2019
  5. Josh SteadmonJul 30, 2019
  6. Josh SteadmonJul 30, 2019
  7. Jeff HostetlerJul 30, 2019
  8. Josh SteadmonJul 30, 2019
  9. 0/2 trace2: don't overload target directoriesJosh Steadmon, Aug 2, 2019
  10. 1/2 docs: mention trace2 target-dir mode in git-configJosh Steadmon, Aug 2, 2019
  11. 2/2 trace2: don't overload target directoriesJosh Steadmon, Aug 2, 2019
  12. Jeff HostetlerAug 5, 2019
  13. Josh SteadmonAug 5, 2019
  14. SZEDER GáborAug 5, 2019
  15. Josh SteadmonAug 5, 2019
  16. 0/3 trace2: don't overload target directoriesJosh Steadmon, Sep 14, 2019
  17. 1/3 docs: mention trace2 target-dir mode in git-configJosh Steadmon, Sep 14, 2019
  18. 2/3 trace2: don't overload target directoriesJosh Steadmon, Sep 14, 2019
  19. 3/3 trace2: write overload message to sentinel filesJosh Steadmon, Sep 14, 2019
  20. Derrick StoleeSep 16, 2019
  21. Jeff HostetlerSep 16, 2019
  22. Josh SteadmonSep 16, 2019
  23. Jeff HostetlerSep 19, 2019
  24. Josh SteadmonSep 19, 2019
  25. Jeff HostetlerSep 20, 2019
  26. Josh SteadmonSep 16, 2019
  27. 0/4 trace2: don't overload target directoriesJosh Steadmon, Oct 3, 2019
  28. 1/4 docs: mention trace2 target-dir mode in git-configJosh Steadmon, Oct 3, 2019
  29. 2/4 docs: clarify trace2 version invariantsJosh Steadmon, Oct 3, 2019
  30. 3/4 trace2: don't overload target directoriesJosh Steadmon, Oct 3, 2019
  31. Junio C HamanoOct 4, 2019
  32. Josh SteadmonOct 4, 2019
  33. Johannes SchindelinOct 4, 2019
  34. Josh SteadmonOct 4, 2019
  35. 4/4 trace2: write overload message to sentinel filesJosh Steadmon, Oct 3, 2019
  36. 0/4 trace2: discard new traces if the target directory contains too many filesJosh Steadmon, Oct 4, 2019
  37. 1/4 docs: mention trace2 target-dir mode in git-configJosh Steadmon, Oct 4, 2019
  38. 2/4 docs: clarify trace2 version invariantsJosh Steadmon, Oct 4, 2019
  39. 3/4 trace2: discard new traces if target directory has too many filesJosh Steadmon, Oct 4, 2019
  40. 4/4 trace2: write discard message to sentinel filesJosh Steadmon, Oct 4, 2019

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.