def _pre_hook(self, msg: Message) -> Message: """ Pre-hook function, what to do after first receiving the message. :param msg: received message :return: `Message` """ msg.add_route(self.name, self._id) expected_parts = self._get_expected_parts(msg) req_id = msg.envelope.request_id if expected_parts > 1: self._pending_msgs[req_id].append(msg) num_partial_requests = len(self._pending_msgs[req_id]) if self.logger.debug_enabled: self._log_info_msg( msg, f'({num_partial_requests}/{expected_parts} parts)' if expected_parts > 1 else '', ) if expected_parts > 1 and expected_parts > num_partial_requests: # NOTE: reduce priority is higher than chain exception # otherwise a reducer will lose its function when earlier pods raise exception raise NoExplicitMessage if (msg.envelope.status.code == jina_pb2.StatusProto.ERROR and self.args.on_error_strategy >= OnErrorStrategy.SKIP_HANDLE): raise ChainedPodException return msg
def test_add_route(): r = jina_pb2.RequestProto() r.control.command = jina_pb2.RequestProto.ControlRequestProto.IDLE msg = Message(None, r, pod_name='test1', identity='sda') msg.add_route('name', 'identity') assert len(msg.envelope.routes) == 2 assert msg.envelope.routes[1].pod == 'name' assert msg.envelope.routes[1].pod_id == 'identity'