QubesOS / qubes-issues

The Qubes OS Project issue tracker
https://www.qubes-os.org/doc/issue-tracking/
536 stars 48 forks source link

Qubes Admin API is not asynchronous #4719

Open DemiMarie opened 5 years ago

DemiMarie commented 5 years ago

Qubes OS version:

Qubes release 4.0 (R4.0)

Affected component(s):

Qubes Admin API


Steps to reproduce the behavior:

Look at the Python code of any of the tools

Expected behavior:

The Qubes 4 Admin API is asychronous

Actual behavior:

The Qubes 4 Admin API is sychronous

General notes:

This would allow many calls to be made concurrently. I discovered this when writing my own tool in dom0.


Related issues:

marmarek commented 5 years ago

Do you mean qubesadmin python module exposing asyncio compatible functions? Or some other method for providing asynchronous version of the API?

DemiMarie commented 5 years ago

The qubesadmin module

On Tue, Jan 15, 2019, 11:14 PM Marek Marczykowski-Górecki < notifications@github.com> wrote:

Do you mean qubesadmin python module exposing asyncio compatible functions? Or some other method for providing asynchronous version of the API?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/QubesOS/qubes-issues/issues/4719#issuecomment-454645867, or mute the thread https://github.com/notifications/unsubscribe-auth/AGGWB_CqffVD4X75md4vZHyT4zWGUYmJks5vDqc8gaJpZM4aCO0R .

marmarek commented 5 years ago

This is a good idea for community contribution.

jpouellet commented 5 years ago

This would allow many calls to be made concurrently.

Doing that safely would require much more than just an async interface, to the point where supporting real concurrent requests in the way you would probably like to be able to take advantage of (allowing e.g. get of some property to return immediately during some non-instantaneous unrelated admin.* operation) introduces all kinds of nasty races and reentrancy and such to code that was largely not written with such concerns in mind. I'm not convinced it would be worth the risk to introduce it in the current core architecture.

marmarek commented 5 years ago

Backend code of Admin API is asynchronous already. It's the frontend that doesn't expose it.

jpouellet commented 5 years ago

Internally yes (event-driven, etc.), but I seemed to remember that there was still a big lock for external callers. Can't seem to find it now though, so I guess I must be wrong. Thanks for the correction.