Skip to content

Commit cc02906

Browse files
committed
issue #547: fix service_test failures.
1 parent 41d1804 commit cc02906

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

mitogen/core.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3524,7 +3524,8 @@ def _init_service_pool(self):
35243524
def _dispatch_calls(self):
35253525
for msg in self.recv:
35263526
if msg.handle == STUB_CALL_SERVICE:
3527-
self._init_service_pool()
3527+
if msg.src_id == mitogen.context_id:
3528+
self._init_service_pool()
35283529
continue
35293530

35303531
chain_id, ret = self._dispatch_one(msg)

mitogen/service.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -496,15 +496,12 @@ def __init__(self, router, services=(), size=1, overwrite=False,
496496
self.router = router
497497
self._activator = self.activator_class()
498498
self._ipc_latch = mitogen.core.Latch()
499-
self._receiver = recv or mitogen.core.Receiver(
499+
self._receiver = mitogen.core.Receiver(
500500
router=router,
501501
handle=mitogen.core.CALL_SERVICE,
502502
overwrite=overwrite,
503503
)
504504

505-
# If self._receiver was inherited from mitogen.core.Dispatcher, we must
506-
# remove its stub notification function before adding it to our Select.
507-
self._receiver.notify = None
508505
self._select = mitogen.select.Select(oneshot=False)
509506
self._select.add(self._receiver)
510507
self._select.add(self._ipc_latch)
@@ -516,6 +513,16 @@ def __init__(self, router, services=(), size=1, overwrite=False,
516513
}
517514
self._invoker_by_name = {}
518515

516+
if recv is not None:
517+
# When inheriting from mitogen.core.Dispatcher, we must remove its
518+
# stub notification function before adding it to our Select. We
519+
# always overwrite this receiver since the standard service.Pool
520+
# handler policy differs from the one inherited from
521+
# core.Dispatcher.
522+
recv.notify = None
523+
self._select.add(recv)
524+
self._func_by_source[recv] = self._on_service_call
525+
519526
for service in services:
520527
self.add(service)
521528
self._py_24_25_compat()

0 commit comments

Comments
 (0)