)]}'
{"nova/cmd/conductor.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d0f26d2c17148ab18f2774a15e20b991fb59efdf","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    config.parse_args(sys.argv)"},{"line_number":36,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":37,"context_line":"    utils.monkey_patch()"},{"line_number":38,"context_line":"    objects.register_all(service_version_caching\u003dTrue)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_a97932fe","line":38,"updated":"2016-01-08 16:29:49.000000000","message":"I feel like this is an object-specific flag in a generic method. I think I\u0027d rather call this as it was before and then do this:\n\n objects.Service.enable_version_cache()\n\nto make it explicit.","commit_id":"a602b11bcfdfe16ddb19ecb574bdcc85eb7f74d2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b1c673d6b74879d8ea3dd9b23e7371098d3744d2","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    config.parse_args(sys.argv)"},{"line_number":36,"context_line":"    logging.setup(CONF, \"nova\")"},{"line_number":37,"context_line":"    utils.monkey_patch()"},{"line_number":38,"context_line":"    objects.register_all(service_version_caching\u003dTrue)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_44697b24","line":38,"in_reply_to":"fa69d971_a97932fe","updated":"2016-01-08 16:37:10.000000000","message":"Done","commit_id":"a602b11bcfdfe16ddb19ecb574bdcc85eb7f74d2"}],"nova/conductor/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d0f26d2c17148ab18f2774a15e20b991fb59efdf","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                                        version_manifest\u003dobject_versions)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def reset(self):"},{"line_number":135,"context_line":"        objects.Service.clear_min_version_cache()"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class ComputeTaskManager(base.Base):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_a9605236","line":135,"updated":"2016-01-08 16:29:49.000000000","message":"I think you need a test to show that this continues to happen.","commit_id":"a602b11bcfdfe16ddb19ecb574bdcc85eb7f74d2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b1c673d6b74879d8ea3dd9b23e7371098d3744d2","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                                        version_manifest\u003dobject_versions)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def reset(self):"},{"line_number":135,"context_line":"        objects.Service.clear_min_version_cache()"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class ComputeTaskManager(base.Base):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_e44e6fc0","line":135,"in_reply_to":"fa69d971_a9605236","updated":"2016-01-08 16:37:10.000000000","message":"Done","commit_id":"a602b11bcfdfe16ddb19ecb574bdcc85eb7f74d2"}],"nova/objects/service.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d0f26d2c17148ab18f2774a15e20b991fb59efdf","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            raise exception.ObjectActionError(action\u003d\u0027get_minimum_version\u0027,"},{"line_number":304,"context_line":"                                              reason\u003d\u0027Invalid binary prefix\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        with cls.min_version_cache() as cache:"},{"line_number":307,"context_line":"            cached_version \u003d cache.get(binary)"},{"line_number":308,"context_line":"            if cached_version:"},{"line_number":309,"context_line":"                return cached_version"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_c934a6fc","line":306,"updated":"2016-01-08 16:29:49.000000000","message":"Although I like context managers as much as the next guy, I completely don\u0027t understand why we need the extra hoop-jumping here.\n\nCan\u0027t we just check the flag, and if True, check the cache, else fall through?","commit_id":"a602b11bcfdfe16ddb19ecb574bdcc85eb7f74d2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b1c673d6b74879d8ea3dd9b23e7371098d3744d2","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            raise exception.ObjectActionError(action\u003d\u0027get_minimum_version\u0027,"},{"line_number":304,"context_line":"                                              reason\u003d\u0027Invalid binary prefix\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        with cls.min_version_cache() as cache:"},{"line_number":307,"context_line":"            cached_version \u003d cache.get(binary)"},{"line_number":308,"context_line":"            if cached_version:"},{"line_number":309,"context_line":"                return cached_version"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_44fe5b39","line":306,"in_reply_to":"fa69d971_c934a6fc","updated":"2016-01-08 16:37:10.000000000","message":"Done","commit_id":"a602b11bcfdfe16ddb19ecb574bdcc85eb7f74d2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d0f26d2c17148ab18f2774a15e20b991fb59efdf","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                                                     use_slave\u003duse_slave)"},{"line_number":312,"context_line":"            if version is None:"},{"line_number":313,"context_line":"                return 0"},{"line_number":314,"context_line":"            cache[binary] \u003d version"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        # NOTE(danms): Since our return value is not controlled by object"},{"line_number":317,"context_line":"        # schema, be explicit here."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_e9aaca18","line":314,"updated":"2016-01-08 16:29:49.000000000","message":"This is confusing because you\u0027re putting the version in the cache without the int() below. Shouldn\u0027t be a problem, but it means you\u0027ll only coerce to int() the first time you call it.\n\nWhy not just do the int() here when you populate the cache the first time and then you can return the cached version right here?\n\nI guess my point is, I would expect us to always be populating the cache and only check the cache if we have caching enabled. It would make the read through this function a little more straightforward.","commit_id":"a602b11bcfdfe16ddb19ecb574bdcc85eb7f74d2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b1c673d6b74879d8ea3dd9b23e7371098d3744d2","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                                                     use_slave\u003duse_slave)"},{"line_number":312,"context_line":"            if version is None:"},{"line_number":313,"context_line":"                return 0"},{"line_number":314,"context_line":"            cache[binary] \u003d version"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        # NOTE(danms): Since our return value is not controlled by object"},{"line_number":317,"context_line":"        # schema, be explicit here."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_84ebf377","line":314,"in_reply_to":"fa69d971_e9aaca18","updated":"2016-01-08 16:37:10.000000000","message":"Done","commit_id":"a602b11bcfdfe16ddb19ecb574bdcc85eb7f74d2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"86bee6f6f06c04ca48e1d9d04ea7d812e3efbc06","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import contextlib"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":"from oslo_utils import versionutils"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_5c15d346","line":15,"updated":"2016-01-08 17:34:15.000000000","message":"unused?","commit_id":"6bddabbd8e7a10ed794ddabeb0400cafa0a2cf5f"}]}
