pyfuse3 icon indicating copy to clipboard operation
pyfuse3 copied to clipboard

Handler exceptions silently vanish in asyncio

Open renyuneyun opened this issue 2 years ago • 5 comments

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.

renyuneyun avatar Oct 23 '23 21:10 renyuneyun

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

ThomasWaldmann avatar Oct 24 '23 15:10 ThomasWaldmann

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?

renyuneyun avatar Oct 24 '23 15:10 renyuneyun

No idea about the different behaviour.

ThomasWaldmann avatar Oct 24 '23 15:10 ThomasWaldmann

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 avatar Oct 25 '23 08:10 Nikratio

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

Nikratio avatar Oct 25 '23 08:10 Nikratio