QubesOS / qubes-rpm-oxide

Rust libraries for processing RPM packages
4 stars 4 forks source link

Remove a huge amount of unnecessary locking #16

Closed DemiMarie closed 2 years ago

DemiMarie commented 2 years ago

Panu Matilainen suggested loading the RPM keyring eagerly instead of lazily. This turns out to work really well: it gets rid of a potential late panic and improves thread-safety.

He also mentioned that RPM keyrings are thread-safe and librpm handles all needed synchronization internally. A quick look at the 4.14.3 source code indicates that this is in fact the case, and so all of the synchronization around keyring operations can go away. As a precaution, all operations on a transaction set are still serialized against both each other and process exit.

qubesos-bot commented 2 years ago

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.1&build=2022071409-4.1&flavor=pull-requests

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.1&build=2022062106-4.1&flavor=update

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/42506#dependencies

6 fixed * system_tests_suspend@hw1 * suspend: [unnamed test](https://openqa.qubes-os.org/tests/42531#step/suspend/20) (unknown) * suspend: [wait_serial](https://openqa.qubes-os.org/tests/42531#step/suspend/24) (wait serial expected) `# wait_serial expected: "xl info; echo 8Ye1l-\$?-"...` * system_tests_network_updates * TC_11_QvmTemplateMgmtVM_debian-11: [test_010_template_install](https://openqa.qubes-os.org/tests/42602#step/TC_11_QvmTemplateMgmtVM_debian-11/2) (failure) `AssertionError: libvirt event impl drain timeout` * system_tests_basic_vm_qrexec_gui@hw1 * TC_00_AppVM_whonix-ws-16: [test_223_audio_play_hvm](https://openqa.qubes-os.org/tests/42529#step/TC_00_AppVM_whonix-ws-16/17) (error) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...` * system_tests_dispvm * TC_20_DispVM_whonix-ws-16: [test_100_open_in_dispvm](https://openqa.qubes-os.org/tests/42626#step/TC_20_DispVM_whonix-ws-16/4) (failure) `AssertionError: libvirt event impl drain timeout` * system_tests_guivm_gui_interactive * guivm_startup: [unnamed test](https://openqa.qubes-os.org/tests/42625#step/guivm_startup/32) (unknown)

Unstable tests

* system_tests_basic_vm_qrexec_gui_xfs
TC_00_AppVM_fedora-35-pool/test_225_audio_rec_unmuted_hvm (1/5 times with errors) - [job 42209](https://openqa.qubes-os.org/tests/42209#step/TC_00_AppVM_fedora-35-pool/19) `AssertionError: Timeout waiting for pulseaudio start in test-inst-v...`
TC_00_AppVM_whonix-ws-16-pool/test_225_audio_rec_unmuted_hvm (1/5 times with errors) - [job 43010](https://openqa.qubes-os.org/tests/43010#step/TC_00_AppVM_whonix-ws-16-pool/19) `AssertionError: only silence detected, no useful audio data`
* system_tests_suspend@hw1
suspend/ (1/5 times with errors) - [job 42195](https://openqa.qubes-os.org/tests/42195#step/suspend/19) `None`
suspend/Failed (1/5 times with errors) - [job 42195](https://openqa.qubes-os.org/tests/42195#step/suspend/20) `# Test died: no candidate needle with tag(s) 'xscreensaver-prompt' ...`
* system_tests_suspend
suspend/ (1/5 times with errors) - [job 42195](https://openqa.qubes-os.org/tests/42195#step/suspend/19) `None`
suspend/Failed (1/5 times with errors) - [job 42195](https://openqa.qubes-os.org/tests/42195#step/suspend/20) `# Test died: no candidate needle with tag(s) 'xscreensaver-prompt' ...`
* system_tests_usbproxy
TC_20_USBProxy_core3_fedora-35/test_061_auto_attach_on_reconnect (1/5 times with errors) - [job 42232](https://openqa.qubes-os.org/tests/42232#step/TC_20_USBProxy_core3_fedora-35/8) `AssertionError: 1 != 0 : Device reconnection failed`
TC_20_USBProxy_core3_whonix-gw-16/test_070_attach_not_installed_front (1/5 times with errors) - [job 42965](https://openqa.qubes-os.org/tests/42965#step/TC_20_USBProxy_core3_whonix-gw-16/9) `qubesusbproxy.core3ext.QubesUSBException: Device attach failed: 202...`
* system_tests_basic_vm_qrexec_gui
TC_00_AppVM_fedora-35/test_223_audio_play_hvm (1/5 times with errors) - [job 41349](https://openqa.qubes-os.org/tests/41349#step/TC_00_AppVM_fedora-35/17) `AssertionError: Timeout waiting for pulseaudio start in test-inst-v...`
TC_00_AppVM_whonix-gw-16/test_300_bug_1028_gui_memory_pinning (1/5 times with errors) - [job 41818](https://openqa.qubes-os.org/tests/41818#step/TC_00_AppVM_whonix-gw-16/21) `AssertionError: Dom0 window doesn't match VM window content`
* system_tests_devices
TC_10_Attach_debian-11/test_000_attach_reattach (1/5 times with errors) - [job 42968](https://openqa.qubes-os.org/tests/42968#step/TC_10_Attach_debian-11/1) `subprocess.CalledProcessError: Command 'ls /dev/xvdi' returned non-...`
TC_10_Attach_fedora-35/test_000_attach_reattach (1/5 times with errors) - [job 42612](https://openqa.qubes-os.org/tests/42612#step/TC_10_Attach_fedora-35/1) `subprocess.CalledProcessError: Command 'ls /dev/xvdi' returned non-...`
TC_10_Attach_fedora-36/test_000_attach_reattach (1/5 times with errors) - [job 42968](https://openqa.qubes-os.org/tests/42968#step/TC_10_Attach_fedora-36/1) `subprocess.CalledProcessError: Command 'ls /dev/xvdi' returned non-...`
TC_10_Attach_whonix-gw-16/test_000_attach_reattach (2/5 times with errors) - [job 42612](https://openqa.qubes-os.org/tests/42612#step/TC_10_Attach_whonix-gw-16/1) `subprocess.CalledProcessError: Command 'ls /dev/xvdi' returned non-...` - [job 42968](https://openqa.qubes-os.org/tests/42968#step/TC_10_Attach_whonix-gw-16/1) `subprocess.CalledProcessError: Command 'ls /dev/xvdi' returned non-...`
TC_10_Attach_whonix-ws-16/test_000_attach_reattach (1/5 times with errors) - [job 42968](https://openqa.qubes-os.org/tests/42968#step/TC_10_Attach_whonix-ws-16/1) `subprocess.CalledProcessError: Command 'ls /dev/xvdi' returned non-...`
* system_tests_pvgrub_salt_storage
TC_41_HVMGrub_debian-11/test_000_standalone_vm (2/5 times with errors) - [job 42193](https://openqa.qubes-os.org/tests/42193#step/TC_41_HVMGrub_debian-11/1) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...` - [job 43833](https://openqa.qubes-os.org/tests/43833#step/TC_41_HVMGrub_debian-11/1) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
TC_42_PVHGrub_debian-11/test_000_standalone_vm (2/5 times with errors) - [job 42193](https://openqa.qubes-os.org/tests/42193#step/TC_42_PVHGrub_debian-11/1) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...` - [job 43833](https://openqa.qubes-os.org/tests/43833#step/TC_42_PVHGrub_debian-11/1) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
TC_41_HVMGrub_debian-11/test_010_template_based_vm (2/5 times with errors) - [job 42193](https://openqa.qubes-os.org/tests/42193#step/TC_41_HVMGrub_debian-11/2) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...` - [job 43833](https://openqa.qubes-os.org/tests/43833#step/TC_41_HVMGrub_debian-11/2) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
TC_41_HVMGrub_fedora-35/test_010_template_based_vm (1/5 times with errors) - [job 42193](https://openqa.qubes-os.org/tests/42193#step/TC_41_HVMGrub_fedora-35/2) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
TC_41_HVMGrub_fedora-36/test_010_template_based_vm (1/5 times with errors) - [job 43833](https://openqa.qubes-os.org/tests/43833#step/TC_41_HVMGrub_fedora-36/2) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
TC_42_PVHGrub_debian-11/test_010_template_based_vm (2/5 times with errors) - [job 42193](https://openqa.qubes-os.org/tests/42193#step/TC_42_PVHGrub_debian-11/2) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...` - [job 43833](https://openqa.qubes-os.org/tests/43833#step/TC_42_PVHGrub_debian-11/2) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
* system_tests_network
VmNetworking_debian-11/test_020_simple_proxyvm_nm (2/5 times with errors) - [job 42235](https://openqa.qubes-os.org/tests/42235#step/VmNetworking_debian-11/3) `AssertionError: 1 != 0 : nm-applet window not found` - [job 42306](https://openqa.qubes-os.org/tests/42306#step/VmNetworking_debian-11/3) `AssertionError: 1 != 0 : nm-applet window not found`
* system_tests_network_updates
TC_10_QvmTemplate_whonix-gw-16/test_000_template_list (1/5 times with errors) - [job 41859](https://openqa.qubes-os.org/tests/41859#step/TC_10_QvmTemplate_whonix-gw-16/1) `subprocess.CalledProcessError: Command 'systemcheck --cli' returned...`
TC_11_QvmTemplateMgmtVM_debian-11/test_010_template_install (1/5 times with errors) - [job 42602](https://openqa.qubes-os.org/tests/42602#step/TC_11_QvmTemplateMgmtVM_debian-11/2) `AssertionError: libvirt event impl drain timeout`
TC_11_QvmTemplateMgmtVM_whonix-gw-16/test_010_template_install (1/5 times with errors) - [job 41859](https://openqa.qubes-os.org/tests/41859#step/TC_11_QvmTemplateMgmtVM_whonix-gw-16/2) `subprocess.CalledProcessError: Command 'systemcheck --cli' returned...`
* system_tests_qrexec
TC_00_Qrexec_debian-11/test_090_qrexec_service_socket_dom0 (1/5 times with errors) - [job 42973](https://openqa.qubes-os.org/tests/42973#step/TC_00_Qrexec_debian-11/16) `AssertionError: service timeout, probably EOF wasn't transferred to...`
* system_tests_splitgpg
TC_10_Thunderbird_debian-11/test_000_send_receive_default (1/5 times with errors) - [job 43834](https://openqa.qubes-os.org/tests/43834#step/TC_10_Thunderbird_debian-11/1) `Exception: Failed to send message with error 'unknown'`
TC_10_Thunderbird_fedora-36/test_000_send_receive_default (1/5 times with errors) - [job 43834](https://openqa.qubes-os.org/tests/43834#step/TC_10_Thunderbird_fedora-36/1) `dogtail.tree.SearchError: descendent of [menu bar | Application]: c...`
TC_10_Thunderbird_debian-11/test_010_send_receive_inline_signed_only (1/5 times with errors) - [job 42194](https://openqa.qubes-os.org/tests/42194#step/TC_10_Thunderbird_debian-11/2) `Exception: Failed to send message with error 'unknown'`
TC_10_Thunderbird_fedora-35/test_010_send_receive_inline_signed_only (1/5 times with errors) - [job 42194](https://openqa.qubes-os.org/tests/42194#step/TC_10_Thunderbird_fedora-35/2) `dogtail.tree.SearchError: descendent of [panel | ]: child with name...`
TC_10_Thunderbird_fedora-36/test_010_send_receive_inline_signed_only (1/5 times with errors) - [job 43834](https://openqa.qubes-os.org/tests/43834#step/TC_10_Thunderbird_fedora-36/2) `dogtail.tree.SearchError: descendent of [menu bar | Application]: c...`
TC_10_Thunderbird_debian-11/test_020_send_receive_inline_with_attachment (1/5 times with errors) - [job 43834](https://openqa.qubes-os.org/tests/43834#step/TC_10_Thunderbird_debian-11/3) `dogtail.tree.SearchError: descendent of [application | Thunderbird]...`
TC_10_Thunderbird_fedora-35/test_020_send_receive_inline_with_attachment (1/5 times with errors) - [job 42194](https://openqa.qubes-os.org/tests/42194#step/TC_10_Thunderbird_fedora-35/3) `dogtail.tree.SearchError: descendent of [application | Thunderbird]...`
TC_10_Thunderbird_fedora-36/test_020_send_receive_inline_with_attachment (1/5 times with errors) - [job 43834](https://openqa.qubes-os.org/tests/43834#step/TC_10_Thunderbird_fedora-36/3) `dogtail.tree.SearchError: descendent of [menu bar | Application]: c...`
TC_10_Thunderbird_whonix-ws-16/test_020_send_receive_inline_with_attachment (1/5 times with errors) - [job 42194](https://openqa.qubes-os.org/tests/42194#step/TC_10_Thunderbird_whonix-ws-16/3) `assert received_attachment == orig_attachment... AssertionError`
* system_tests_basic_vm_qrexec_gui_ext4
TC_00_AppVM_whonix-gw-16-pool/test_100_qrexec_filecopy (1/5 times with errors) - [job 42178](https://openqa.qubes-os.org/tests/42178#step/TC_00_AppVM_whonix-gw-16-pool/5) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
* system_tests_network_ipv6
VmIPv6Networking_debian-11/test_540_ipv6_inter_vm (1/5 times with errors) - [job 43248](https://openqa.qubes-os.org/tests/43248#step/VmIPv6Networking_debian-11/25) `raise exceptions.TimeoutError()... asyncio.exceptions.TimeoutError`
* system_tests_basic_vm_qrexec_gui@hw1
TC_00_AppVM_fedora-35/test_223_audio_play_hvm (1/5 times with errors) - [job 41349](https://openqa.qubes-os.org/tests/41349#step/TC_00_AppVM_fedora-35/17) `AssertionError: Timeout waiting for pulseaudio start in test-inst-v...`
TC_00_AppVM_whonix-gw-16/test_300_bug_1028_gui_memory_pinning (1/5 times with errors) - [job 41818](https://openqa.qubes-os.org/tests/41818#step/TC_00_AppVM_whonix-gw-16/21) `AssertionError: Dom0 window doesn't match VM window content`
* system_tests_basic_vm_qrexec_gui_btrfs
TC_00_AppVM_whonix-gw-16-pool/test_000_start_shutdown (1/5 times with errors) - [job 43019](https://openqa.qubes-os.org/tests/43019#step/TC_00_AppVM_whonix-gw-16-pool/1) `qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...`
TC_00_AppVM_whonix-ws-16-pool/test_223_audio_play_hvm (1/5 times with errors) - [job 42970](https://openqa.qubes-os.org/tests/42970#step/TC_00_AppVM_whonix-ws-16-pool/17) `AssertionError: Timeout waiting for pulseaudio start in test-inst-v...`
* system_tests_dispvm
TC_04_DispVM/test_003_cleanup_destroyed (1/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_04_DispVM/2) `raise exceptions.TimeoutError()... asyncio.exceptions.TimeoutError`
TC_20_DispVM_debian-11/test_010_simple_dvm_run (1/5 times with errors) - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_debian-11/1) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
TC_20_DispVM_fedora-35/test_010_simple_dvm_run (1/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_fedora-35/1) `assert len(self.loop._selector.get_map()) \... AssertionError`
TC_20_DispVM_fedora-36/test_010_simple_dvm_run (1/5 times with errors) - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_fedora-36/1) `assert len(self.loop._selector.get_map()) \... AssertionError`
TC_20_DispVM_whonix-gw-16/test_010_simple_dvm_run (2/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_whonix-gw-16/1) `None` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_whonix-gw-16/1) `None`
TC_20_DispVM_whonix-ws-16/test_010_simple_dvm_run (2/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_whonix-ws-16/1) `assert len(self.loop._selector.get_map()) \... AssertionError` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_whonix-ws-16/1) `qubes.exc.QubesVMError: Cannot connect to qrexec agent for 90 secon...`
TC_20_DispVM_debian-11/test_020_gui_app (1/5 times with errors) - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_debian-11/2) `raise exceptions.TimeoutError()... asyncio.exceptions.TimeoutError`
TC_20_DispVM_whonix-gw-16/test_020_gui_app (2/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_whonix-gw-16/2) `None` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_whonix-gw-16/2) `None`
TC_20_DispVM_debian-11/test_030_edit_file (2/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_debian-11/3) `AssertionError: Timeout while waiting for disp[0-9]* window to show` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_debian-11/3) `AssertionError: Timeout while waiting for disp[0-9]* window to show`
TC_20_DispVM_fedora-35/test_030_edit_file (1/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_fedora-35/3) `AssertionError: Timeout while waiting for disp[0-9]* window to show`
TC_20_DispVM_fedora-36/test_030_edit_file (3/5 times with errors) - [job 42967](https://openqa.qubes-os.org/tests/42967#step/TC_20_DispVM_fedora-36/3) `AssertionError: Timeout waiting for editor window` - [job 43255](https://openqa.qubes-os.org/tests/43255#step/TC_20_DispVM_fedora-36/3) `AssertionError: Timeout waiting for editor window` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_fedora-36/3) `AssertionError: Timeout while waiting for disp[0-9]* window to show`
TC_20_DispVM_whonix-gw-16/test_030_edit_file (2/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_whonix-gw-16/3) `None` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_whonix-gw-16/3) `None`
TC_20_DispVM_whonix-ws-16/test_030_edit_file (2/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_whonix-ws-16/3) `AssertionError: Timeout while waiting for disp[0-9]* window to show` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_whonix-ws-16/3) `AssertionError: Timeout while waiting for disp[0-9]* window to show`
TC_20_DispVM_debian-11/test_100_open_in_dispvm (2/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_debian-11/4) `AssertionError: './open-file test.txt' failed with ./open-file test...` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_debian-11/4) `AssertionError: './open-file test.txt' failed with ./open-file test...`
TC_20_DispVM_fedora-35/test_100_open_in_dispvm (1/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_fedora-35/4) `AssertionError: './open-file test.txt' failed with ./open-file test...`
TC_20_DispVM_fedora-36/test_100_open_in_dispvm (3/5 times with errors) - [job 42967](https://openqa.qubes-os.org/tests/42967#step/TC_20_DispVM_fedora-36/4) `AssertionError: Timeout waiting for editor window` - [job 43255](https://openqa.qubes-os.org/tests/43255#step/TC_20_DispVM_fedora-36/4) `AssertionError: Timeout waiting for editor window` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_fedora-36/4) `AssertionError: './open-file test.txt' failed with ./open-file test...`
TC_20_DispVM_whonix-gw-16/test_100_open_in_dispvm (2/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_whonix-gw-16/4) `None` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_whonix-gw-16/4) `None`
TC_20_DispVM_whonix-ws-16/test_100_open_in_dispvm (5/5 times with errors) - [job 42585](https://openqa.qubes-os.org/tests/42585#step/TC_20_DispVM_whonix-ws-16/4) `AssertionError: Timeout while waiting for disp[0-9]* window to show` - [job 42626](https://openqa.qubes-os.org/tests/42626#step/TC_20_DispVM_whonix-ws-16/4) `AssertionError: libvirt event impl drain timeout` - [job 42967](https://openqa.qubes-os.org/tests/42967#step/TC_20_DispVM_whonix-ws-16/4) `AssertionError: libvirt event impl drain timeout` - [job 43255](https://openqa.qubes-os.org/tests/43255#step/TC_20_DispVM_whonix-ws-16/4) `AssertionError: libvirt event impl drain timeout` - [job 43841](https://openqa.qubes-os.org/tests/43841#step/TC_20_DispVM_whonix-ws-16/4) `AssertionError: './open-file test.txt' failed with ./open-file test...`