PATCH PR27323 debuginfod concurrency++

Mark Wielaard mark@klomp.org
Fri Feb 5 16:57:23 GMT 2021


Hi Frank,

On Tue, 2021-02-02 at 16:59 -0500, Frank Ch. Eigler via Elfutils-devel wrote:
>     PR27323 debuginfod: improve query concurrency with grooming
>     
>     Start using a second sqlite3 database connection for webapi query
>     servicing.  This allows much better concurrency when long-running
>     grooming operations are in progress.
>     
>     No testsuite impact.  Grooming times are too short to try to hit with
>     concurrent requests.  OTOH the existing tests did show some
>     interesting regressions that needed fixing, like needing not to
>     dual-wield db and dbq when doing rpm-dwz-related lookups from during
>     scanning, and the way in which corrupted databases are reported.
>     These needed some automated invocations of gdb on the running
>     debuginfod binaries that just failed their testing, for in-situ
>     debugging.
>     
>     Hand-tested for function on a huge 20GB index file.  Allowed webapi
>     queries to be run throughout random points of the grooming process,
>     including especially the long count(*) report loops before & after.
>     
> [...]
> +2021-02-02  Frank Ch. Eigler <fche@redhat.com>
> +
> +	PR27323
> +	* debuginfod.cxx (dbq): New read-only database connection for queries
> +	only.
> +	(signal_handler): Interrupt it.
> +	(main): Open / close it.
> +	(handle_buildid): Use it for webapi queries only.
> +	(database_stats_report): Make more interruptible.  Report sqlite3
> +	operation times to the prometheus metrics.
> +	(groom): Make more interruptible.
> +	(thread_main_fts_source_paths, thread_main_groom): Ensure
> +	state/progress metrics are fresh even in case of exceptions.

This does make sense to me. Looks good.

Thanks,

Mark


More information about the Elfutils-devel mailing list