Specially raise a `ContextCancelled` for a task-context rpc
							parent
							
								
									0d8a5506da
								
							
						
					
					
						commit
						0e6f017929
					
				|  | @ -28,6 +28,7 @@ from ._exceptions import ( | ||||||
|     unpack_error, |     unpack_error, | ||||||
|     ModuleNotExposed, |     ModuleNotExposed, | ||||||
|     is_multi_cancelled, |     is_multi_cancelled, | ||||||
|  |     ContextCancelled, | ||||||
|     TransportClosed, |     TransportClosed, | ||||||
| ) | ) | ||||||
| from . import _debug | from . import _debug | ||||||
|  | @ -152,9 +153,12 @@ async def _invoke( | ||||||
|                 task_status.started(cs) |                 task_status.started(cs) | ||||||
|                 await chan.send({'return': await coro, 'cid': cid}) |                 await chan.send({'return': await coro, 'cid': cid}) | ||||||
| 
 | 
 | ||||||
|             # if cs.cancelled_caught: |             if cs.cancelled_caught: | ||||||
|             #     # task was cancelled so relay to the cancel to caller |                 # task-contex was cancelled so relay to the cancel to caller | ||||||
|             #     await chan.send({'return': await coro, 'cid': cid}) |                 raise ContextCancelled( | ||||||
|  |                     f'{func.__name__} cancelled itself', | ||||||
|  |                     suberror_type=trio.Cancelled, | ||||||
|  |                 ) | ||||||
| 
 | 
 | ||||||
|         else: |         else: | ||||||
|             # regular async function |             # regular async function | ||||||
|  | @ -168,7 +172,8 @@ async def _invoke( | ||||||
|         # TODO: maybe we'll want differnet "levels" of debugging |         # TODO: maybe we'll want differnet "levels" of debugging | ||||||
|         # eventualy such as ('app', 'supervisory', 'runtime') ? |         # eventualy such as ('app', 'supervisory', 'runtime') ? | ||||||
|         if not isinstance(err, trio.ClosedResourceError) and ( |         if not isinstance(err, trio.ClosedResourceError) and ( | ||||||
|             not is_multi_cancelled(err) |             not is_multi_cancelled(err)) and ( | ||||||
|  |             not isinstance(err, ContextCancelled) | ||||||
|         ): |         ): | ||||||
|             # XXX: is there any case where we'll want to debug IPC |             # XXX: is there any case where we'll want to debug IPC | ||||||
|             # disconnects? I can't think of a reason that inspecting |             # disconnects? I can't think of a reason that inspecting | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue