)]}'
{"taskflow/engines/worker_based/executor.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"747c4c0d40ad71d373cd93725e08d964074f0720","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":70,"context_line":"            msg_type \u003d data.pop(\u0027type\u0027, None)"},{"line_number":71,"context_line":"            if msg_type is not None:"},{"line_number":72,"context_line":"                if msg_type \u003d\u003d pr.RESPONSE:"},{"line_number":73,"context_line":"                    self._process_response(data, message)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F6qY%3D","line":70,"updated":"2014-03-12 23:57:13.000000000","message":"Why can\u0027t this just be something in message.properties, it seems like the type belongs there and not in data? Or even use the message.content_type field for this?","commit_id":"5ad80aeb879d9ab25de64d49a5437bb047174666"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"9a20947aa184bd38acfd18f1091c48482369a918","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":70,"context_line":"            msg_type \u003d data.pop(\u0027type\u0027, None)"},{"line_number":71,"context_line":"            if msg_type is not None:"},{"line_number":72,"context_line":"                if msg_type \u003d\u003d pr.RESPONSE:"},{"line_number":73,"context_line":"                    self._process_response(data, message)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FzYs%3D","line":70,"in_reply_to":"AAAAWH%2F%2F2fk%3D","updated":"2014-03-13 17:58:06.000000000","message":"How about not restricting ourselves from using properties just due to the filesystem transport (which is used only for testing) and using properties and maybe using the zookeeper transport instead (zookeeper should be available on all jenkins slaves, running on localhost:2181). Looking at the code it appears that thet zookeeper transport/channel does support properties (and it uses kazoo so that\u0027s also good). Does the memory transport not support this (it seems like it should since its just passing around objects in memory)?\n\nAlthough I\u0027m confused, U are already using \u0027task_uuid \u003d message.properties[\u0027correlation_id\u0027]\u0027 how does that work if the filesystem transport doesn\u0027t support properties?","commit_id":"5ad80aeb879d9ab25de64d49a5437bb047174666"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"e35baa5f8edadd35074cc8f92ac3053731945ad2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":70,"context_line":"            msg_type \u003d data.pop(\u0027type\u0027, None)"},{"line_number":71,"context_line":"            if msg_type is not None:"},{"line_number":72,"context_line":"                if msg_type \u003d\u003d pr.RESPONSE:"},{"line_number":73,"context_line":"                    self._process_response(data, message)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F2fk%3D","line":70,"in_reply_to":"AAAAWH%2F%2F6qY%3D","updated":"2014-03-13 11:48:24.000000000","message":"We can\u0027t really use it since:\n\n\"content_type – The messages content_type. If content_type is set, no     serialization occurs as it is assumed this is either a binary object, or you’ve done your own serialization. Leave blank if using built-in serialization as our library properly sets content_type.\"\n\nTheoretically, we can use the `headers` message field, but it is supported by RabbitMQ only. Or we can use the `properties` message field, but it is not supported by the filesystem transport. \n\nBTW data, doesn\u0027t mean pure data - this parameter is just decoded message. So here the \u0027message\u0027 is pure AMQP (not only) message and the `data` is decoded message body.\n\nSo, does it make sense to change anything?","commit_id":"5ad80aeb879d9ab25de64d49a5437bb047174666"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"30adc314cbb8a267287ae4f8079bb49b0db2ef0b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":70,"context_line":"            msg_type \u003d data.pop(\u0027type\u0027, None)"},{"line_number":71,"context_line":"            if msg_type is not None:"},{"line_number":72,"context_line":"                if msg_type \u003d\u003d pr.RESPONSE:"},{"line_number":73,"context_line":"                    self._process_response(data, message)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2Fte0%3D","line":70,"in_reply_to":"AAAAWH%2F%2FzYs%3D","updated":"2014-03-14 10:31:30.000000000","message":"It is possible to use the `correlation_id`, because it is part of the RabbitMQ message format:\n\n    :persistent\n    :mandatory\n    :timestamp\n    :expiration\n    :type\n    :reply_to\n    :content_type\n    :content_encoding\n    :correlation_id\n    :priority\n    :message_id\n    :user_id\n    :app_id\n\nBut you can\u0027t really use the `whatever` message attribute - it won\u0027t be transferred. But I think we can use the `message_id` attribute:\n\n\":message_id - Message identifier as a string. If applications need to identify messages, it is recommended that they use this attribute instead of putting it into the message payload.\"","commit_id":"5ad80aeb879d9ab25de64d49a5437bb047174666"},{"author":{"_account_id":7366,"name":"Ivan Melnikov","email":"imelnikov@griddynamics.com","username":"imelnikov"},"change_message_id":"9edc2cdb217cd486e3f0794e146704b6ba0e8fd9","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":70,"context_line":"            msg_type \u003d data.pop(\u0027type\u0027, None)"},{"line_number":71,"context_line":"            if msg_type is not None:"},{"line_number":72,"context_line":"                if msg_type \u003d\u003d pr.RESPONSE:"},{"line_number":73,"context_line":"                    self._process_response(data, message)"},{"line_number":74,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FthE%3D","line":71,"updated":"2014-03-14 09:55:00.000000000","message":"If msg_type is None (not there), we silently ignore the message. Why so?","commit_id":"36314d6cf9d2ac8828cdd946f33b7f39fddf0747"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"4cf088b56f8fcab55aa0ba0b44f1f58097357eb4","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":70,"context_line":"            msg_type \u003d data.pop(\u0027type\u0027, None)"},{"line_number":71,"context_line":"            if msg_type is not None:"},{"line_number":72,"context_line":"                if msg_type \u003d\u003d pr.RESPONSE:"},{"line_number":73,"context_line":"                    self._process_response(data, message)"},{"line_number":74,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FtRc%3D","line":71,"in_reply_to":"AAAAWH%2F%2FthE%3D","updated":"2014-03-14 10:31:42.000000000","message":"Done","commit_id":"36314d6cf9d2ac8828cdd946f33b7f39fddf0747"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"62a1ef8a8f623ec8435b6ea829626b24a77f4cb1","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                if msg_type \u003d\u003d pr.RESPONSE:"},{"line_number":73,"context_line":"                    self._process_response(data, message)"},{"line_number":74,"context_line":"                else:"},{"line_number":75,"context_line":"                    LOG.warning(\"Unexpected message type: %s\" % msg_type)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _process_response(self, response, message):"},{"line_number":78,"context_line":"        \"\"\"Process response from remote side.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FzXo%3D","line":75,"updated":"2014-03-13 19:06:06.000000000","message":"LOG.warning(\"Unexpected message type: %s\" % msg_type) -\u003e LOG.warning(\"Unexpected message type: %s\", msg_type)","commit_id":"36314d6cf9d2ac8828cdd946f33b7f39fddf0747"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"4cf088b56f8fcab55aa0ba0b44f1f58097357eb4","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                if msg_type \u003d\u003d pr.RESPONSE:"},{"line_number":73,"context_line":"                    self._process_response(data, message)"},{"line_number":74,"context_line":"                else:"},{"line_number":75,"context_line":"                    LOG.warning(\"Unexpected message type: %s\" % msg_type)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _process_response(self, response, message):"},{"line_number":78,"context_line":"        \"\"\"Process response from remote side.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FtpM%3D","line":75,"in_reply_to":"AAAAWH%2F%2FzXo%3D","updated":"2014-03-14 10:31:42.000000000","message":"Done","commit_id":"36314d6cf9d2ac8828cdd946f33b7f39fddf0747"}],"taskflow/engines/worker_based/protocol.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"747c4c0d40ad71d373cd93725e08d964074f0720","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        return self._data"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def to_dict(self):"},{"line_number":172,"context_line":"        return dict(type\u003dRESPONSE, state\u003dself._state, **self._data)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F6pg%3D","line":172,"updated":"2014-03-12 23:57:13.000000000","message":"Instead of putting whatever keys are in data into this dict and potentially involving key name conflicts/overwriting why not just do.\n\n  dict(type\u003dRESPONSE, state\u003dself._state, data\u003dself._data)\n\nThis avoids the following:\n\n    \u003e\u003e\u003e x \u003d {\"state\": \u0027b\u0027}\n  \u003e\u003e\u003e z \u003d dict(state\u003d\"y\", **x)\n  Traceback (most recent call last):\n    File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  TypeError: type object got multiple values for keyword argument \u0027state\u0027","commit_id":"5ad80aeb879d9ab25de64d49a5437bb047174666"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"3714498b9bf049798489b0fbe042ac5efeed2866","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        return self._data"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def to_dict(self):"},{"line_number":172,"context_line":"        return dict(type\u003dRESPONSE, state\u003dself._state, **self._data)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F1gE%3D","line":172,"in_reply_to":"AAAAWH%2F%2F6pg%3D","updated":"2014-03-13 14:38:39.000000000","message":"Done","commit_id":"5ad80aeb879d9ab25de64d49a5437bb047174666"}],"taskflow/engines/worker_based/proxy.py":[{"author":{"_account_id":7366,"name":"Ivan Melnikov","email":"imelnikov@griddynamics.com","username":"imelnikov"},"change_message_id":"2543e81ab581b88075354d2226df10e0d4e1835a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                             routing_key\u003drouting_key,"},{"line_number":74,"context_line":"                             exchange\u003dself._exchange,"},{"line_number":75,"context_line":"                             declare\u003d[queue],"},{"line_number":76,"context_line":"                             message_id\u003dmsg.TYPE,"},{"line_number":77,"context_line":"                             **kwargs)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2Fs0o%3D","line":76,"updated":"2014-03-14 12:00:57.000000000","message":"I\u0027m afraid message id is not the best choice of field for this use.\n\n\"Message-id, if set, uniquely identifies a message within the message system. The message producer is usually responsible for setting the message-id in such a way that it is assured to be globally unique. A broker MAY discard a message as a duplicate if the value of the message-id matches that of a previously received message sent to the same node.\"\n\nhttp://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-properties","commit_id":"f2649e890d856159a1d28edd8810336cd9a507fa"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"e1e0587a40db4730bd0b3223bcb826a3ecf5c5aa","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                             routing_key\u003drouting_key,"},{"line_number":74,"context_line":"                             exchange\u003dself._exchange,"},{"line_number":75,"context_line":"                             declare\u003d[queue],"},{"line_number":76,"context_line":"                             message_id\u003dmsg.TYPE,"},{"line_number":77,"context_line":"                             **kwargs)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2FsBE%3D","line":76,"in_reply_to":"AAAAWH%2F%2Fs0o%3D","updated":"2014-03-14 13:53:36.000000000","message":"Then;\n\n\":type - Message type as a string. Recommended to be used by applications instead of including this information into the message payload.\"","commit_id":"f2649e890d856159a1d28edd8810336cd9a507fa"}],"taskflow/engines/worker_based/server.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"747c4c0d40ad71d373cd93725e08d964074f0720","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":52,"context_line":"            else:"},{"line_number":53,"context_line":"                LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":54,"context_line":"                msg_type \u003d data.pop(\u0027type\u0027, None)"},{"line_number":55,"context_line":"                if msg_type is not None:"},{"line_number":56,"context_line":"                    if msg_type \u003d\u003d pr.REQUEST:"},{"line_number":57,"context_line":"                        # spawn new thread to process request"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F6nA%3D","line":54,"updated":"2014-03-12 23:57:13.000000000","message":"Same question, it seems like the message actually has a content_type (or properties) so why not just use its already provided fields?","commit_id":"5ad80aeb879d9ab25de64d49a5437bb047174666"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"e35baa5f8edadd35074cc8f92ac3053731945ad2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                LOG.exception(\"Failed to acknowledge AMQP message.\")"},{"line_number":52,"context_line":"            else:"},{"line_number":53,"context_line":"                LOG.debug(\"AMQP message acknowledged.\")"},{"line_number":54,"context_line":"                msg_type \u003d data.pop(\u0027type\u0027, None)"},{"line_number":55,"context_line":"                if msg_type is not None:"},{"line_number":56,"context_line":"                    if msg_type \u003d\u003d pr.REQUEST:"},{"line_number":57,"context_line":"                        # spawn new thread to process request"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F2VM%3D","line":54,"in_reply_to":"AAAAWH%2F%2F6nA%3D","updated":"2014-03-13 11:48:24.000000000","message":"Same answer)","commit_id":"5ad80aeb879d9ab25de64d49a5437bb047174666"}]}
