)]}'
{"nova/cells/manager.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"54e980a61c2e575b08b0591f18f01ad2f1d3b627","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                    # NOTE(belliott) LP#1552050 - manually mark all the fields"},{"line_number":175,"context_line":"                    # as changed or the global cell will think there is nothing"},{"line_number":176,"context_line":"                    # to sync"},{"line_number":177,"context_line":"                    instance._changed_fields \u003d set([f for f in instance.fields"},{"line_number":178,"context_line":"                                                    if f not in skips])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"                except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_41d71bbf","line":177,"updated":"2016-03-02 13:34:12.000000000","message":"I\u0027d like Dan\u0027s opinion on if there\u0027s a better way to accomplish this, but this seems reasonable given what this method is attempting to do.","commit_id":"85f2f9d38c45b565525f389458f5a8b2927f2ccd"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bcef19b8a5d93bb69e392e35da20d6cd27d3bee9","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                    # NOTE(belliott) LP#1552050 - manually mark all the fields"},{"line_number":175,"context_line":"                    # as changed or the global cell will think there is nothing"},{"line_number":176,"context_line":"                    # to sync"},{"line_number":177,"context_line":"                    instance._changed_fields \u003d set([f for f in instance.fields"},{"line_number":178,"context_line":"                                                    if f not in skips])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"                except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_847db1b3","line":177,"in_reply_to":"7af24918_41d71bbf","updated":"2016-03-02 13:57:59.000000000","message":"+1\n\nI do also wonder if we should really do this in the cell sync logic part itself, rather than here, but I guess it makes little difference, really:\nhttps://github.com/openstack/nova/blob/master/nova/cells/messaging.py#L1008","commit_id":"85f2f9d38c45b565525f389458f5a8b2927f2ccd"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"6fd4674c849ca1c12357182cd95c1181b9a56036","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                    # NOTE(belliott) LP#1552050 - manually mark all the fields"},{"line_number":175,"context_line":"                    # as changed or the global cell will think there is nothing"},{"line_number":176,"context_line":"                    # to sync"},{"line_number":177,"context_line":"                    instance._changed_fields \u003d set([f for f in instance.fields"},{"line_number":178,"context_line":"                                                    if f not in skips])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"                except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_30221702","line":177,"in_reply_to":"7af24918_847db1b3","updated":"2016-03-02 14:34:56.000000000","message":"Yep, it feels awkward to tag the fields changed like this.  If there\u0027s a better way to just mark the whole object as needing saving, that\u0027d work.\n\nI excluded \"services\" and \"tags\" because they didn\u0027t have save handlers, whatever that means. :)","commit_id":"85f2f9d38c45b565525f389458f5a8b2927f2ccd"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65781beaac066eca1ffb9dcf8f4e3e8b52650da8","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    # as changed or the global cell will think there is nothing"},{"line_number":176,"context_line":"                    # to sync"},{"line_number":177,"context_line":"                    instance._changed_fields \u003d set([f for f in instance.fields"},{"line_number":178,"context_line":"                                                    if f not in skips])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"                except exception.InstanceNotFound:"},{"line_number":181,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_b9a00692","line":178,"updated":"2016-03-07 21:12:05.000000000","message":"I really don\u0027t like doing this. Can\u0027t we know which fields we actually need to save?","commit_id":"0eadab541a81243f5be8c7ea598c72848cc7b64c"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"f3a4ab94e58b21a07bccfabeea46acbeb379e061","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    # as changed or the global cell will think there is nothing"},{"line_number":176,"context_line":"                    # to sync"},{"line_number":177,"context_line":"                    instance._changed_fields \u003d set([f for f in instance.fields"},{"line_number":178,"context_line":"                                                    if f not in skips])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"                except exception.InstanceNotFound:"},{"line_number":181,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_38ff62ab","line":178,"in_reply_to":"5aef4532_421c3d13","updated":"2016-03-09 15:53:25.000000000","message":"If we don\u0027t distinguish its as a separate use case via toggle or new method, then every call to instance_update_at_top would have to go through this whole comparison thing.  Could be very expensive.","commit_id":"0eadab541a81243f5be8c7ea598c72848cc7b64c"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f55b556efc0df61950a60a388224fe3b7fd6d549","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    # as changed or the global cell will think there is nothing"},{"line_number":176,"context_line":"                    # to sync"},{"line_number":177,"context_line":"                    instance._changed_fields \u003d set([f for f in instance.fields"},{"line_number":178,"context_line":"                                                    if f not in skips])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"                except exception.InstanceNotFound:"},{"line_number":181,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_ef3bdbe9","line":178,"in_reply_to":"5aef4532_b9a00692","updated":"2016-03-07 22:21:02.000000000","message":"The fields that need to be saved are those that haven\u0027t been synced up to the parent cell. I can\u0027t think of a good way to determine that short of pulling the instance from the parent cell and comparing.","commit_id":"0eadab541a81243f5be8c7ea598c72848cc7b64c"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"78b205498e1e677948fb01d9a692c25bef758e08","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    # as changed or the global cell will think there is nothing"},{"line_number":176,"context_line":"                    # to sync"},{"line_number":177,"context_line":"                    instance._changed_fields \u003d set([f for f in instance.fields"},{"line_number":178,"context_line":"                                                    if f not in skips])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"                except exception.InstanceNotFound:"},{"line_number":181,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_421c3d13","line":178,"in_reply_to":"5aef4532_d8a2034b","updated":"2016-03-08 16:28:15.000000000","message":"Moving it to the parent side opens up two options:\n\nDo the comparison in instance_update_at_top which may be unnecessary for other uses of that method potentially causing performance issues.\n\nAdd a toggle to instance_update_at_top or a new RPC method which would do the comparison and leave the current usage alone. Given the \"freeze\" on cellsv1 work this is probably not the option to go with.","commit_id":"0eadab541a81243f5be8c7ea598c72848cc7b64c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"09d42980226d8cf707f3546e955ed61af02e957d","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    # as changed or the global cell will think there is nothing"},{"line_number":176,"context_line":"                    # to sync"},{"line_number":177,"context_line":"                    instance._changed_fields \u003d set([f for f in instance.fields"},{"line_number":178,"context_line":"                                                    if f not in skips])"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"                except exception.InstanceNotFound:"},{"line_number":181,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_d8a2034b","line":178,"in_reply_to":"5aef4532_ef3bdbe9","updated":"2016-03-08 15:47:22.000000000","message":"Well, if you don\u0027t make this change down here, you could possibly do that in the parent cell.\n\nAnyway, you\u0027re setting an internal value of a thing that we don\u0027t control (i.e. it\u0027s in a library). If that ever changes then this will silently stop working, especially given the way the test works. At least fix that.\n\nHowever, I still think that sending the instance to the parent, letting it compare and update the appropriate fields would be better. Surely that\u0027s less DB traffic than saving the entire instance every time this gets called, right? That includes re-serializing all the flavor data, the info_cache, etc.","commit_id":"0eadab541a81243f5be8c7ea598c72848cc7b64c"}]}
