Message ID | 20211120050939.53411-1-kevr@0cost.org |
---|---|
State | Superseded, archived |
Headers | show |
Series | fix: release transaction lock before unregistering syncdbs | expand |
On 11/19/21 at 09:09pm, Kevin Morris via pacman-dev wrote: > Signed-off-by: Kevin Morris <kevr@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.
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;
Signed-off-by: Kevin Morris <kevr@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(-)