def handle_new_tuple_set_2(self, hts2):
if self.my_pplan_helper is None or self.my_instance is None:<EOL><INDENT>Log.error("<STR_LIT>")<EOL><DEDENT>else:<EOL><INDENT>hts = tuple_pb2.HeronTupleSet()<EOL>if hts2.HasField('<STR_LIT>'):<EOL><INDENT>hts.control.CopyFrom(hts2.control)<EOL><DEDENT>else:<EOL><INDENT>hdts = tuple_pb2.HeronDataTupleSet()<EOL>hdts.stream.CopyFrom(hts2.data.stream)<EOL>try:<EOL><INDENT>for trunk in hts2.data.tuples:<EOL><INDENT>added_tuple = hdts.tuples.add()<EOL>added_tuple.ParseFromString(trunk)<EOL><DEDENT><DEDENT>except Exception:<EOL><INDENT>Log.exception('<STR_LIT>')<EOL><DEDENT>hts.data.CopyFrom(hdts)<EOL><DEDENT>self.in_stream.offer(hts)<EOL>if self.my_pplan_helper.is_topology_running():<EOL><INDENT>self.my_instance.py_class.process_incoming_tuples()<EOL><DEDENT><DEDENT>
Called when new HeronTupleSet2 arrives
           Convert(Assemble) HeronTupleSet2(raw byte array) to HeronTupleSet
           See more at GitHub PR #1421
        :param tuple_msg_set: HeronTupleSet2 type