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

Reply via email to