Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handler exceptions silently vanish in asyncio #93

Open
renyuneyun opened this issue Oct 23, 2023 · 5 comments
Open

Handler exceptions silently vanish in asyncio #93

renyuneyun opened this issue Oct 23, 2023 · 5 comments

Comments

@renyuneyun
Copy link

I'm new to pyfuse3, and am learning it.
When using trio, if a handler function (e.g. readdir()) throws an exception, the exception is raised globally, and the app crashes. To me, this is an expected behaviour.
However, when using asyncio, the exception vanishes -- nothing is printed in the terminal. This is unexpected.

Is there an argument / option that controls this behaviour? How can I make the exception visible to me during development at least?

I saw #82, but am not sure if that is talking about the same topic. In particular, I would agree that an exception should not crash the app (configurable through argument), but should be visible. Silently snoozing it is not a good idea.

@ThomasWaldmann
Copy link
Collaborator

ThomasWaldmann commented Oct 24, 2023

#86 is what we ended up with, based on a branch created by @Nikratio .

@renyuneyun
Copy link
Author

Thanks for the response @ThomasWaldmann . However, as I'm not familiar with Cython, I'm not sure what that change implies?
In particular, is it the reason for different behaviours when using asyncio and trio?

@ThomasWaldmann
Copy link
Collaborator

No idea about the different behaviour.

@Nikratio
Copy link
Contributor

The changes above should not affect trio vs asyncio.

I believe the reason for the different behavior is the implementation of _Nursery.__aexit__ in pyfuse3_asyncio.py. Patches welcome :-).

@Nikratio
Copy link
Contributor

..but I am not an asyncio user, so it's also possible that the reason lies within asyncio itself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants