)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1ac06877074809f02c9837551b077f870f8152a2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     qiaojian \u003cqiaojian@awcloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-09 22:49:35 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Alarm-valuator recreat deleted alarms in some cases"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When Aodh using sqlalchemy as the datastore backend,"},{"line_number":10,"context_line":"session.merge is used to update an alarm object,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5aef4532_a4d31fd4","line":7,"range":{"start_line":7,"start_character":19,"end_line":7,"end_character":26},"updated":"2016-03-10 09:23:11.000000000","message":"recreates","commit_id":"6fda4bece2fabe851d13539dc2a4b83a86113484"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1ac06877074809f02c9837551b077f870f8152a2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     qiaojian \u003cqiaojian@awcloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-09 22:49:35 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Alarm-valuator recreat deleted alarms in some cases"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When Aodh using sqlalchemy as the datastore backend,"},{"line_number":10,"context_line":"session.merge is used to update an alarm object,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5aef4532_64cd9730","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":18},"updated":"2016-03-10 09:23:11.000000000","message":"you mean \"alarm evaluator\" right?","commit_id":"6fda4bece2fabe851d13539dc2a4b83a86113484"},{"author":{"_account_id":13979,"name":"qiaojian","email":"qiaojian@awcloud.com","username":"joyce"},"change_message_id":"982eaf73c94966ffce4c90a83e375d943f0e2b74","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     qiaojian \u003cqiaojian@awcloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-09 22:49:35 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Alarm-valuator recreat deleted alarms in some cases"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When Aodh using sqlalchemy as the datastore backend,"},{"line_number":10,"context_line":"session.merge is used to update an alarm object,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5aef4532_279a716e","line":7,"range":{"start_line":7,"start_character":19,"end_line":7,"end_character":26},"in_reply_to":"5aef4532_a4d31fd4","updated":"2016-03-10 09:37:02.000000000","message":"Yes, aodh-alarm-evaluator service.\nThank you for your correcting.","commit_id":"6fda4bece2fabe851d13539dc2a4b83a86113484"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1ac06877074809f02c9837551b077f870f8152a2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Alarm-valuator recreat deleted alarms in some cases"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When Aodh using sqlalchemy as the datastore backend,"},{"line_number":10,"context_line":"session.merge is used to update an alarm object,"},{"line_number":11,"context_line":"which has a behavior of create if not exist."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5aef4532_24e0af95","line":9,"range":{"start_line":9,"start_character":10,"end_line":9,"end_character":15},"updated":"2016-03-10 09:23:11.000000000","message":"is using","commit_id":"6fda4bece2fabe851d13539dc2a4b83a86113484"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1ac06877074809f02c9837551b077f870f8152a2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When Aodh using sqlalchemy as the datastore backend,"},{"line_number":10,"context_line":"session.merge is used to update an alarm object,"},{"line_number":11,"context_line":"which has a behavior of create if not exist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Modify it to session.query."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5aef4532_a4eaff71","line":11,"range":{"start_line":11,"start_character":24,"end_line":11,"end_character":30},"updated":"2016-03-10 09:23:11.000000000","message":"creating the object if it does not exist.","commit_id":"6fda4bece2fabe851d13539dc2a4b83a86113484"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1ac06877074809f02c9837551b077f870f8152a2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When Aodh using sqlalchemy as the datastore backend,"},{"line_number":10,"context_line":"session.merge is used to update an alarm object,"},{"line_number":11,"context_line":"which has a behavior of create if not exist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Modify it to session.query."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5aef4532_e4008736","line":11,"range":{"start_line":11,"start_character":10,"end_line":11,"end_character":11},"updated":"2016-03-10 09:23:11.000000000","message":"the","commit_id":"6fda4bece2fabe851d13539dc2a4b83a86113484"}],"aodh/evaluator/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"ffa19c0495938d98bdb132e99b9703f700d855b7","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                    LOG.warning(_LW(\"Skip updating this alarm\u0027s state, the\""},{"line_number":126,"context_line":"                                    \"alarm: %s has been deleted\"),"},{"line_number":127,"context_line":"                                alarm.alarm_id)"},{"line_number":128,"context_line":"                self._record_change(alarm)"},{"line_number":129,"context_line":"            self.notifier.notify(alarm, previous, reason, reason_data)"},{"line_number":130,"context_line":"        except Exception:"},{"line_number":131,"context_line":"            # retry will occur naturally on the next evaluation"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa0719c6_deb38a08","line":128,"updated":"2016-03-24 10:08:29.000000000","message":"Do you still want to record a change if the alarm has been deleted?","commit_id":"7454ccfdf410a978ca43a7557ef850af1a48e14e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"34cdba3c3760d3e02b92e40216e800870f553a38","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                    LOG.warning(_LW(\"Skip updating this alarm\u0027s state, the\""},{"line_number":126,"context_line":"                                    \"alarm: %s has been deleted\"),"},{"line_number":127,"context_line":"                                alarm.alarm_id)"},{"line_number":128,"context_line":"                self._record_change(alarm)"},{"line_number":129,"context_line":"            self.notifier.notify(alarm, previous, reason, reason_data)"},{"line_number":130,"context_line":"        except Exception:"},{"line_number":131,"context_line":"            # retry will occur naturally on the next evaluation"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa0719c6_8ff717d2","line":128,"in_reply_to":"fa0719c6_deb38a08","updated":"2016-03-24 11:51:04.000000000","message":"Hmm, thanks for reminding me!","commit_id":"7454ccfdf410a978ca43a7557ef850af1a48e14e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"ad5a2aae4d04c5a422c442385b20023c791f674c","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                try:"},{"line_number":123,"context_line":"                    self._storage_conn.update_alarm(alarm)"},{"line_number":124,"context_line":"                except storage.AlarmNotFound:"},{"line_number":125,"context_line":"                    LOG.warning(_LW(\"Skip updating this alarm\u0027s state, the\""},{"line_number":126,"context_line":"                                    \"alarm: %s has been deleted\"),"},{"line_number":127,"context_line":"                                alarm.alarm_id)"},{"line_number":128,"context_line":"                else:"},{"line_number":129,"context_line":"                    self._record_change(alarm)"},{"line_number":130,"context_line":"            self.notifier.notify(alarm, previous, reason, reason_data)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa0719c6_27038fb9","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":47},"updated":"2016-03-24 12:34:32.000000000","message":"did you just missed a % here?","commit_id":"18dc4626a3f89c653dfd253870c62772d113422b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"18f45371a4723d3374340cecbeb61feed6b58ab8","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                try:"},{"line_number":123,"context_line":"                    self._storage_conn.update_alarm(alarm)"},{"line_number":124,"context_line":"                except storage.AlarmNotFound:"},{"line_number":125,"context_line":"                    LOG.warning(_LW(\"Skip updating this alarm\u0027s state, the\""},{"line_number":126,"context_line":"                                    \"alarm: %s has been deleted\"),"},{"line_number":127,"context_line":"                                alarm.alarm_id)"},{"line_number":128,"context_line":"                else:"},{"line_number":129,"context_line":"                    self._record_change(alarm)"},{"line_number":130,"context_line":"            self.notifier.notify(alarm, previous, reason, reason_data)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa0719c6_9ddc6e47","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":47},"in_reply_to":"fa0719c6_27038fb9","updated":"2016-03-24 13:09:09.000000000","message":"No it\u0027s ok this way.","commit_id":"18dc4626a3f89c653dfd253870c62772d113422b"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4e3cf2ed2c25c5e1591bde9d3e1fd5d8a9dc6f28","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                try:"},{"line_number":123,"context_line":"                    self._storage_conn.update_alarm(alarm)"},{"line_number":124,"context_line":"                except storage.AlarmNotFound:"},{"line_number":125,"context_line":"                    LOG.warning(_LW(\"Skip updating this alarm\u0027s state, the\""},{"line_number":126,"context_line":"                                    \"alarm: %s has been deleted\"),"},{"line_number":127,"context_line":"                                alarm.alarm_id)"},{"line_number":128,"context_line":"                else:"},{"line_number":129,"context_line":"                    self._record_change(alarm)"},{"line_number":130,"context_line":"            self.notifier.notify(alarm, previous, reason, reason_data)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da0c15f0_6179b82f","line":127,"range":{"start_line":125,"start_character":0,"end_line":127,"end_character":47},"in_reply_to":"fa0719c6_9ddc6e47","updated":"2016-03-25 02:59:12.000000000","message":"Ah, I see.","commit_id":"18dc4626a3f89c653dfd253870c62772d113422b"}],"aodh/storage/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"ffa19c0495938d98bdb132e99b9703f700d855b7","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \"\"\"Error raised when the storage backend version is not good enough.\"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class ResourceNotFound(Exception):"},{"line_number":51,"context_line":"    \"\"\"Error raised when the needed resource not found.\"\"\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa0719c6_3e9a866e","line":50,"updated":"2016-03-24 10:08:29.000000000","message":"Let\u0027s go for it. Create a AlarmNotFound exception, that takes the alarm_id at least as an arg.\n\nclass AlarmNotFound(Exception):\n    def __init__(self, alarm_id);\n          self.alarm_id \u003d alarm_id\n          super(AlarmNotFound, self).__init__(\"Alarm %s not found\" % alarm_id)","commit_id":"7454ccfdf410a978ca43a7557ef850af1a48e14e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"34cdba3c3760d3e02b92e40216e800870f553a38","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \"\"\"Error raised when the storage backend version is not good enough.\"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class ResourceNotFound(Exception):"},{"line_number":51,"context_line":"    \"\"\"Error raised when the needed resource not found.\"\"\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa0719c6_cf4f4f32","line":50,"in_reply_to":"fa0719c6_3e9a866e","updated":"2016-03-24 11:51:04.000000000","message":"Done","commit_id":"7454ccfdf410a978ca43a7557ef850af1a48e14e"}],"aodh/storage/impl_sqlalchemy.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1ac06877074809f02c9837551b077f870f8152a2","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        session \u003d self._engine_facade.get_session()"},{"line_number":215,"context_line":"        with session.begin():"},{"line_number":216,"context_line":"            alarm_row \u003d session.query(models.Alarm).get(alarm.alarm_id)"},{"line_number":217,"context_line":"            alarm_row.update(alarm.as_dict())"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        return self._row_to_alarm_model(alarm_row)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_a4b83f76","line":216,"range":{"start_line":216,"start_character":24,"end_line":216,"end_character":71},"updated":"2016-03-10 09:23:11.000000000","message":"The problem is that, I think, this is going to run a SELECT where the only thing we want is an UPDATE.","commit_id":"6fda4bece2fabe851d13539dc2a4b83a86113484"},{"author":{"_account_id":13979,"name":"qiaojian","email":"qiaojian@awcloud.com","username":"joyce"},"change_message_id":"982eaf73c94966ffce4c90a83e375d943f0e2b74","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        session \u003d self._engine_facade.get_session()"},{"line_number":215,"context_line":"        with session.begin():"},{"line_number":216,"context_line":"            alarm_row \u003d session.query(models.Alarm).get(alarm.alarm_id)"},{"line_number":217,"context_line":"            alarm_row.update(alarm.as_dict())"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        return self._row_to_alarm_model(alarm_row)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_c7574dc8","line":216,"range":{"start_line":216,"start_character":24,"end_line":216,"end_character":71},"in_reply_to":"5aef4532_a4b83f76","updated":"2016-03-10 09:37:02.000000000","message":"Yes, also in many testcases, create and update is mixed.","commit_id":"6fda4bece2fabe851d13539dc2a4b83a86113484"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4db90c3dfd15e2a8ca40e589e46def988a664b2c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        session \u003d self._engine_facade.get_session()"},{"line_number":215,"context_line":"        with session.begin():"},{"line_number":216,"context_line":"            alarm_row \u003d session.query(models.Alarm).get(alarm.alarm_id)"},{"line_number":217,"context_line":"            if alarm_row:"},{"line_number":218,"context_line":"                alarm_row.update(alarm.as_dict())"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_72a70b0b","line":216,"updated":"2016-03-10 13:59:16.000000000","message":"Don\u0027t get, just go for update() and check the return value.","commit_id":"db8be8767cf74fa09ba4a2570081e6f70ceb2850"},{"author":{"_account_id":13979,"name":"qiaojian","email":"qiaojian@awcloud.com","username":"joyce"},"change_message_id":"7832e50bed00cfea6cba433b96db5dcbd7d2cc1c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        session \u003d self._engine_facade.get_session()"},{"line_number":215,"context_line":"        with session.begin():"},{"line_number":216,"context_line":"            alarm_row \u003d session.query(models.Alarm).get(alarm.alarm_id)"},{"line_number":217,"context_line":"            if alarm_row:"},{"line_number":218,"context_line":"                alarm_row.update(alarm.as_dict())"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_d4a06b44","line":216,"in_reply_to":"5aef4532_72a70b0b","updated":"2016-03-11 01:47:12.000000000","message":"1.Do update() will cause an error of DBDuplicateEntry, the code:\n\nalarm_row \u003d session.query(models.Alarm).update(alarm.as_dict())\n\n2.Do filter() before update will only return the count of rows being updated, but we need an object of sqlalchemy model. the code:\n\ncount \u003d session.query(models.Alarm).filter(             models.Alarm.alarm_id \u003d\u003d alarm.alarm_id).update(alarm.as_dict())\n\nAbove all, I think is a better way to do get at first, and I need  to handle the case that alarm not exist.","commit_id":"db8be8767cf74fa09ba4a2570081e6f70ceb2850"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"5a1c50d05da0d5559a812f7d82de01cda7f5cc91","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        session \u003d self._engine_facade.get_session()"},{"line_number":215,"context_line":"        with session.begin():"},{"line_number":216,"context_line":"            alarm_row \u003d session.query(models.Alarm).get(alarm.alarm_id)"},{"line_number":217,"context_line":"            if alarm_row:"},{"line_number":218,"context_line":"                alarm_row.update(alarm.as_dict())"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afc51ec_eb2add2b","line":216,"in_reply_to":"5aef4532_d4a06b44","updated":"2016-03-11 12:19:38.000000000","message":"You obviously need to filter first, but there\u0027s no need to select the alarm AFAICT.\n\nJust return the alarm passed as argument, that should be better. We should not return anything on this function I imagine.","commit_id":"db8be8767cf74fa09ba4a2570081e6f70ceb2850"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"8842d67d17e2a8e8259c8c3a63fd71b8b4fc7b97","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                models.Alarm.alarm_id \u003d\u003d alarm.alarm_id).update("},{"line_number":218,"context_line":"                    alarm.as_dict())"},{"line_number":219,"context_line":"            if not count:"},{"line_number":220,"context_line":"                LOG.warn(_LI(\"Alarm %s does not exist, update failed\"),"},{"line_number":221,"context_line":"                         alarm.alarm_id)"},{"line_number":222,"context_line":"        return alarm"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1af94dfe_0cb21a06","line":220,"range":{"start_line":220,"start_character":16,"end_line":220,"end_character":25},"updated":"2016-03-18 02:28:40.000000000","message":"please use LOG.warning, ref:\nhttps://docs.python.org/3/library/logging.html#logging.warning","commit_id":"4dc49cb1d53624d163c8c36f6a70af0c3ff1a296"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"72a5fc495ff5091e5c5173a72e6224c53a08f0e3","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                models.Alarm.alarm_id \u003d\u003d alarm.alarm_id).update("},{"line_number":218,"context_line":"                    alarm.as_dict())"},{"line_number":219,"context_line":"            if not count:"},{"line_number":220,"context_line":"                LOG.warning(_LI(\"Alarm %s does not exist, update failed\"),"},{"line_number":221,"context_line":"                            alarm.alarm_id)"},{"line_number":222,"context_line":"        return alarm"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_0c397af2","line":220,"range":{"start_line":220,"start_character":28,"end_line":220,"end_character":31},"updated":"2016-03-18 02:56:05.000000000","message":"wrong level, use _LW","commit_id":"7e499217c610e0a7e85ee2fe9612bdde9dc400aa"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"674ad030e6b6ca8e8727decec0acc260f57c770a","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                models.Alarm.alarm_id \u003d\u003d alarm.alarm_id).update("},{"line_number":218,"context_line":"                    alarm.as_dict())"},{"line_number":219,"context_line":"            if not count:"},{"line_number":220,"context_line":"                LOG.warning(_LW(\"Alarm %s does not exist, update failed\"),"},{"line_number":221,"context_line":"                            alarm.alarm_id)"},{"line_number":222,"context_line":"        return alarm"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def delete_alarm(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_03a5b645","line":221,"range":{"start_line":220,"start_character":16,"end_line":221,"end_character":43},"updated":"2016-03-18 12:21:13.000000000","message":"Why isn\u0027t that raising an error?","commit_id":"d7d4f3176a171100c9be48f16d745f9f3a39a781"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ca40e39dd101a6df5a80a5224499b6deb1ac95b0","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                models.Alarm.alarm_id \u003d\u003d alarm.alarm_id).update("},{"line_number":218,"context_line":"                    alarm.as_dict())"},{"line_number":219,"context_line":"            if not count:"},{"line_number":220,"context_line":"                LOG.warning(_LW(\"Alarm %s does not exist, update failed\"),"},{"line_number":221,"context_line":"                            alarm.alarm_id)"},{"line_number":222,"context_line":"        return alarm"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def delete_alarm(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_fdb3ff95","line":221,"range":{"start_line":220,"start_character":16,"end_line":221,"end_character":43},"in_reply_to":"1af94dfe_03a5b645","updated":"2016-03-18 13:57:31.000000000","message":"Hmm, this issue only effect the situation that we deleted an alarm and then evaluator send an update alarm request by db connection. it won\u0027t effect the API request, because update API will try to query the alarm firstly, and then do update action. So maybe we\u0027d better just log warning message and continue alarm evaluation. if we raise an error we must catch the error in evaluator and pass.","commit_id":"d7d4f3176a171100c9be48f16d745f9f3a39a781"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"69109f16383a2dbcc8c1c586397c9b34818ac4f2","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            count \u003d session.query(models.Alarm).filter("},{"line_number":217,"context_line":"                models.Alarm.alarm_id \u003d\u003d alarm.alarm_id).update("},{"line_number":218,"context_line":"                    alarm.as_dict())"},{"line_number":219,"context_line":"            if not count:"},{"line_number":220,"context_line":"                LOG.warning(_LW(\"Alarm %s does not exist, update failed\"),"},{"line_number":221,"context_line":"                            alarm.alarm_id)"},{"line_number":222,"context_line":"        return alarm"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def delete_alarm(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa0719c6_1ded8c25","line":221,"range":{"start_line":219,"start_character":12,"end_line":221,"end_character":43},"updated":"2016-03-22 09:41:06.000000000","message":"This needs to raise.","commit_id":"799100c92dbed598ee86fb613d4ea1f2032f1843"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"e97270173fc323a4a943cf4005d9ae89a6dc6ff1","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            count \u003d session.query(models.Alarm).filter("},{"line_number":217,"context_line":"                models.Alarm.alarm_id \u003d\u003d alarm.alarm_id).update("},{"line_number":218,"context_line":"                    alarm.as_dict())"},{"line_number":219,"context_line":"            if not count:"},{"line_number":220,"context_line":"                LOG.warning(_LW(\"Alarm %s does not exist, update failed\"),"},{"line_number":221,"context_line":"                            alarm.alarm_id)"},{"line_number":222,"context_line":"        return alarm"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def delete_alarm(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa0719c6_3dd4d01e","line":221,"range":{"start_line":219,"start_character":12,"end_line":221,"end_character":43},"in_reply_to":"fa0719c6_1ded8c25","updated":"2016-03-24 02:31:13.000000000","message":"will do it","commit_id":"799100c92dbed598ee86fb613d4ea1f2032f1843"}],"aodh/storage/pymongo_base.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"f16f35f44e6a590e641a42b793b4ad14b988f729","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            {\u0027$set\u0027: data},"},{"line_number":69,"context_line":"            upsert\u003dupsert)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        stored_alarm \u003d self.db.alarm.find({\u0027alarm_id\u0027: alarm.alarm_id})[0]"},{"line_number":72,"context_line":"        if not stored_alarm:"},{"line_number":73,"context_line":"            LOG.warning(_LW(\"Alarm %s does not exist, update failed\"),"},{"line_number":74,"context_line":"                        alarm.alarm_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_271a8c7d","line":71,"updated":"2016-03-18 07:06:41.000000000","message":"[0] index error","commit_id":"a5a1950c896bfda117ce4454dac6b99f1b01c6af"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"674ad030e6b6ca8e8727decec0acc260f57c770a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        \"\"\"Update alarm.\"\"\""},{"line_number":64,"context_line":"        data \u003d alarm.as_dict()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.db.alarm.update("},{"line_number":67,"context_line":"            {\u0027alarm_id\u0027: alarm.alarm_id},"},{"line_number":68,"context_line":"            {\u0027$set\u0027: data},"},{"line_number":69,"context_line":"            upsert\u003dupsert)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        alarms_found \u003d self.db.alarm.find({\u0027alarm_id\u0027: alarm.alarm_id})"},{"line_number":72,"context_line":"        if alarms_found.count() \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_a3b5e27e","line":69,"range":{"start_line":66,"start_character":8,"end_line":69,"end_character":26},"updated":"2016-03-18 12:21:13.000000000","message":"This should return the modified count, so I don\u0027t think you need to find() again, which can also fail because it\u0027s racy.","commit_id":"d7d4f3176a171100c9be48f16d745f9f3a39a781"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"cd90896d26922d26ebdccf80d377283b97feedc5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        \"\"\"Update alarm.\"\"\""},{"line_number":64,"context_line":"        data \u003d alarm.as_dict()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.db.alarm.update("},{"line_number":67,"context_line":"            {\u0027alarm_id\u0027: alarm.alarm_id},"},{"line_number":68,"context_line":"            {\u0027$set\u0027: data},"},{"line_number":69,"context_line":"            upsert\u003dupsert)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        alarms_found \u003d self.db.alarm.find({\u0027alarm_id\u0027: alarm.alarm_id})"},{"line_number":72,"context_line":"        if alarms_found.count() \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_e23fdbb1","line":69,"range":{"start_line":66,"start_character":8,"end_line":69,"end_character":26},"in_reply_to":"1af94dfe_7829bd89","updated":"2016-03-18 14:41:39.000000000","message":"+1 to liusheng","commit_id":"d7d4f3176a171100c9be48f16d745f9f3a39a781"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ca40e39dd101a6df5a80a5224499b6deb1ac95b0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        \"\"\"Update alarm.\"\"\""},{"line_number":64,"context_line":"        data \u003d alarm.as_dict()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.db.alarm.update("},{"line_number":67,"context_line":"            {\u0027alarm_id\u0027: alarm.alarm_id},"},{"line_number":68,"context_line":"            {\u0027$set\u0027: data},"},{"line_number":69,"context_line":"            upsert\u003dupsert)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        alarms_found \u003d self.db.alarm.find({\u0027alarm_id\u0027: alarm.alarm_id})"},{"line_number":72,"context_line":"        if alarms_found.count() \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_7829bd89","line":69,"range":{"start_line":66,"start_character":8,"end_line":69,"end_character":26},"in_reply_to":"1af94dfe_a3b5e27e","updated":"2016-03-18 13:57:31.000000000","message":"maybe this can return the modified count, but the find() is mainly used to return the updated alarm, the stored_alarm.","commit_id":"d7d4f3176a171100c9be48f16d745f9f3a39a781"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"69109f16383a2dbcc8c1c586397c9b34818ac4f2","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        alarms_found \u003d self.db.alarm.find({\u0027alarm_id\u0027: alarm.alarm_id})"},{"line_number":72,"context_line":"        if alarms_found.count() \u003d\u003d 0:"},{"line_number":73,"context_line":"            LOG.warning(_LW(\"Alarm %s does not exist, update failed\"),"},{"line_number":74,"context_line":"                        alarm.alarm_id)"},{"line_number":75,"context_line":"            return alarm"},{"line_number":76,"context_line":"        stored_alarm \u003d alarms_found[0]"},{"line_number":77,"context_line":"        del stored_alarm[\u0027_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa0719c6_7df488f1","line":74,"range":{"start_line":73,"start_character":12,"end_line":74,"end_character":39},"updated":"2016-03-22 09:41:06.000000000","message":"raise","commit_id":"799100c92dbed598ee86fb613d4ea1f2032f1843"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"e97270173fc323a4a943cf4005d9ae89a6dc6ff1","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        alarms_found \u003d self.db.alarm.find({\u0027alarm_id\u0027: alarm.alarm_id})"},{"line_number":72,"context_line":"        if alarms_found.count() \u003d\u003d 0:"},{"line_number":73,"context_line":"            LOG.warning(_LW(\"Alarm %s does not exist, update failed\"),"},{"line_number":74,"context_line":"                        alarm.alarm_id)"},{"line_number":75,"context_line":"            return alarm"},{"line_number":76,"context_line":"        stored_alarm \u003d alarms_found[0]"},{"line_number":77,"context_line":"        del stored_alarm[\u0027_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa0719c6_386c699b","line":74,"range":{"start_line":73,"start_character":12,"end_line":74,"end_character":39},"in_reply_to":"fa0719c6_7df488f1","updated":"2016-03-24 02:31:13.000000000","message":"Done","commit_id":"799100c92dbed598ee86fb613d4ea1f2032f1843"}]}
