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