coreos / rpm-ostree

⚛📦 Hybrid image/package system with atomic upgrades and package layering
https://coreos.github.io/rpm-ostree
Other
858 stars 195 forks source link

rpm-ostree ignores CTRL-C while downloading rpm-md or rpms #897

Open dustymabe opened 7 years ago

dustymabe commented 7 years ago

Basically I am in the middle of a transaction that is taking longer than expected and I try to CTRL-C and I see where it says cancelling transaction but then keeps going printing status updates to the screen about download progress.

After some time it finally finishes with error: Operation was cancelled.

I've been told this is because librepo takes over SIGINT and causes this behavior.

# rpm -q rpm-ostree ostree
rpm-ostree-2017.6-3.fc26.x86_64
ostree-2017.8-3.fc26.x86_64
cgwalters commented 7 years ago

Blog I did on this topic a while ago: https://blog.verbum.org/2013/12/03/cancelling-computation-gcancellable-or-sigint-versus-threads-versus-exceptions/

The problem isn't that librepo takes over SIGINT (it doesn't by default, but dnf enables it), it's that it doesn't have a good way to cancel things besides SIGINT since it doesn't hook into GCancellable.

Ultimately I think what we need to do is make the transaction a subprocess, and not a thread. Then cancel = kill -9. It'd also solve the memory leak issues that caused me to start on https://github.com/projectatomic/rpm-ostree/pull/606

cgwalters commented 7 years ago

See also https://github.com/projectatomic/rpm-ostree/issues/897

miabbott commented 7 years ago

See also #897

I think you meant #211?

FotomicWS commented 6 years ago

I had this issue running the Fedora 28 Atomic Workstation install and I’m not concerned that the system took a few minutes to respond, but now when I try and run my rpm-ostree upgrade again it’s failing with an error about a partial package at about the same point I canceled.

jlebon commented 6 years ago

@FotomicWS, could you try cleaning out the cache using rpm-ostree cleanup -m and upgrading again?

FotomicWS commented 6 years ago

@jlebon Thanks for the note. I did try rpm-ostree cleanup -m and also rpm-ostree cleanup -b. But I still get that partial error. Also tried rpm-ostree fsck, rpm-ostree fsck --delete, rpm-ostree upgrade --download-only, and rpm-ostree refresh-md. Also tried using the 'software' applet which doesn't seem to install anything, just right away goes to reboot and shows the same programs as before.
edit;grammar

jlebon commented 6 years ago

Could you file a separate issue? Make sure to also paste the exact error message you're receiving as well. Thanks!

FotomicWS commented 6 years ago

Tried it one more time to make sure I get that error message correct and it completed without error. I hadn't run the `rpm-ostree cleanup -m' previously, and I didn't reboot after that, so maybe rebooting was necessary. Been stuck on that error for days, '[18] Transferred a partial file'. Between that and trying to get pulse network going...reminds me of the supercross race in Seattle last weekend, LInux mudding. I see it downgraded Firefox, so maybe that was part of the issue. I'll reboot and file a separate issue if it's not completely resolved. Thanks again for the help. :)

FotomicWS commented 6 years ago

Looks good. I also ran that software update applet a few times after discovering that today too. It said it had updates, but it never installed, just prompted for reboot. But maybe that changed something. I don’t know why I hit Ctrl-C. Must have been tired, but I should have suspended and came back to it.