summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@redhat.com>2021-08-19 13:11:11 -0400
committerFrank Ch. Eigler <fche@redhat.com>2021-08-19 13:11:11 -0400
commit89b1a4e8793e0379e386da313c1bd90080390877 (patch)
treefdb7166a7cce29bd56820909f4eba407c4fabe92
parentf3466e18337681d2159bb591aaee6993e6df4fee (diff)
downloadelfutils-89b1a4e8793e0379e386da313c1bd90080390877.tar.gz
PR28249: correct debuginfod after-you locking
The initial code for bug #27673 accidentally nuked all buildid service concurrency, not just identical concurrent requests. Correct this with one-liner patch. Observing the effect in the automated testsuite is difficult, so hand-tested against large requests and short ones, run in an interleaved way. Signed-off-by: Frank Ch. Eigler <fche@redhat.com>
-rw-r--r--debuginfod/ChangeLog6
-rw-r--r--debuginfod/debuginfod.cxx2
2 files changed, 7 insertions, 1 deletions
diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index 9e82d78d..530f7dc7 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,9 @@
+2021-08-19 Frank Ch. Eigler <fche@redhat.com>
+
+ PR28249
+ * debuginfod.cxx (handler_cb): Fix after_you unique_set key
+ to the entire incoming URL.
+
2021-07-26 Noah Sanci <nsanci@redhat.com>
PR27982
diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
index 4ddd9255..fca07f61 100644
--- a/debuginfod/debuginfod.cxx
+++ b/debuginfod/debuginfod.cxx
@@ -2141,7 +2141,7 @@ handler_cb (void * /*cls*/,
struct timespec tsay_start, tsay_end;
clock_gettime (CLOCK_MONOTONIC, &tsay_start);
static unique_set<string> busy_urls;
- unique_set_reserver<string> after_you(busy_urls, url1);
+ unique_set_reserver<string> after_you(busy_urls, url_copy);
clock_gettime (CLOCK_MONOTONIC, &tsay_end);
afteryou = (tsay_end.tv_sec - tsay_start.tv_sec) + (tsay_end.tv_nsec - tsay_start.tv_nsec)/1.e9;
add_metric ("thread_busy", "role", "http-buildid-after-you", -1);