[PATCH] fix: release transaction lock before unregistering syncdbs
Andrew Gregory
andrew.gregory.8 at gmail.com
Sat Nov 20 07:11:50 UTC 2021
On 11/19/21 at 09:09pm, Kevin Morris via pacman-dev wrote:
> Signed-off-by: Kevin Morris <kevr at 0cost.org>
> ---
> `alpm_unregister_all_syncdbs` errors out when a transaction is held.
> Since this function closes transactions as-is, moving this call below
> the transaction unlock step solves issues that `pyalpm` sees when
> it cleans up the handle.
>
> lib/libalpm/alpm.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c
> index 6708e202..1c38feb8 100644
> --- a/lib/libalpm/alpm.c
> +++ b/lib/libalpm/alpm.c
> @@ -107,10 +107,6 @@ int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
> myhandle->db_local = NULL;
> }
>
> - if(alpm_unregister_all_syncdbs(myhandle) == -1) {
> - ret = -1;
> - }
> -
> #ifdef HAVE_LIBCURL
> curl_multi_cleanup(myhandle->curlm);
> curl_global_cleanup();
> @@ -118,6 +114,11 @@ int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
> #endif
>
> _alpm_handle_unlock(myhandle);
> +
> + if(alpm_unregister_all_syncdbs(myhandle) == -1) {
> + ret = -1;
> + }
> +
> _alpm_handle_free(myhandle);
>
> return ret;
I don't see how this fixes the issue. All you've done is move
alpm_unregister_all_syncdbs under _alpm_handle_unlock, but _alpm_handle_unlock
doesn't clear the transaction.
More information about the pacman-dev
mailing list