Set `Context._scope_nursery` on callee side too
Because obviously we probably want to support `allow_overruns` on the remote callee side as well XD Only found the bugs fixed in this patch this thanks to writing a much more exhaustive test set for overrun cases B)proper_breakpoint_hooking
							parent
							
								
									1183276653
								
							
						
					
					
						commit
						a7faa26686
					
				|  | @ -205,8 +205,9 @@ async def _invoke( | |||
|             await chan.send({'functype': 'context', 'cid': cid}) | ||||
| 
 | ||||
|             try: | ||||
|                 with cancel_scope as cs: | ||||
|                     ctx._scope = cs | ||||
|                 async with trio.open_nursery() as nurse: | ||||
|                     ctx._scope_nursery = nurse | ||||
|                     ctx._scope = nurse.cancel_scope | ||||
|                     task_status.started(ctx) | ||||
|                     res = await coro | ||||
|                     await chan.send({'return': res, 'cid': cid}) | ||||
|  | @ -240,8 +241,7 @@ async def _invoke( | |||
|                         f'Context entrypoint {func} was terminated:\n{ctx}' | ||||
|                     ) | ||||
| 
 | ||||
|             assert cs | ||||
|             if cs.cancelled_caught: | ||||
|             if ctx.cancelled_caught: | ||||
| 
 | ||||
|                 # first check for and raise any remote error | ||||
|                 # before raising any context cancelled case | ||||
|  | @ -252,6 +252,7 @@ async def _invoke( | |||
|                     ctx._maybe_raise_remote_err(re) | ||||
| 
 | ||||
|                 fname = func.__name__ | ||||
|                 cs: trio.CancelScope = ctx._scope | ||||
|                 if cs.cancel_called: | ||||
|                     canceller = ctx._cancel_called_remote | ||||
|                     # await _debug.breakpoint() | ||||
|  | @ -383,7 +384,7 @@ async def _invoke( | |||
|         # error is probably from above coro running code *not from the | ||||
|         # underlyingn rpc invocation* since a scope was never allocated | ||||
|         # around actual coroutine await. | ||||
|         if cs is None: | ||||
|         if ctx._scope is None: | ||||
|             # we don't ever raise directly here to allow the | ||||
|             # msg-loop-scheduler to continue running for this | ||||
|             # channel. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue