debuginfod: print filename for "cannot open archive" error

Message ID 1d95d22d-9582-755a-9de1-3f5d8fc3ebe0@suse.cz
State New
Headers
Series debuginfod: print filename for "cannot open archive" error |

Commit Message

Martin Liška Aug. 17, 2022, 7:12 a.m. UTC
  Report the file that has such a problem so that one can inspect it.

Signed-off-by: Martin Liska <mliska@suse.cz>
---
 debuginfod/debuginfod.cxx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Frank Ch. Eigler Aug. 17, 2022, 10:58 a.m. UTC | #1
Hi -

> Report the file that has such a problem so that one can inspect it.
> Signed-off-by: Martin Liska <mliska@suse.cz>

The complication with this type of change is that the exception text
objects also make it into the prometheus metrics.  When file names and
such variables show up, they will bifurcate all the affected error
metrics into families.

Not sure what is the best solution to that.  A separate verbose log
print to explain the specifics of this error?  An extra parameter to
the exception object, which is only logged but not passed to
prometheus metric naming?  Some other way?

- FChE
  

Patch

diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
index 9245be53..67683354 100644
--- a/debuginfod/debuginfod.cxx
+++ b/debuginfod/debuginfod.cxx
@@ -1714,7 +1714,7 @@  handle_buildid_r_match (bool internal_req_p,
 
   rc = archive_read_open_FILE (a, fp);
   if (rc != ARCHIVE_OK)
-    throw archive_exception(a, "cannot open archive from pipe");
+    throw archive_exception(a, "cannot open archive " + b_source0 + " from pipe");
 
   // archive traversal is in three stages, no, four stages:
   // 1) skip entries whose names do not match the requested one
@@ -2973,7 +2973,7 @@  archive_classify (const string& rps, string& archive_extension,
 
   rc = archive_read_open_FILE (a, fp);
   if (rc != ARCHIVE_OK)
-    throw archive_exception(a, "cannot open archive from pipe");
+    throw archive_exception(a, "cannot open archive " + rps + " from pipe");
 
   if (verbose > 3)
     obatched(clog) << "libarchive scanning " << rps << endl;