)]}'
{"specs/juno/resolve-combination-alarm-dependency-chain.rst":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"1a698dbcebe2cbf21ab921e83203078077f83dab","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* API doesn\u0027t handle the dependency"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    * Dead loop will be introduced when update alarm"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        When we update an alarm, we need to check if it introduces dead loop,"},{"line_number":105,"context_line":"        if it does, then this operation will fail with 400."}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_f6f7a38a","line":102,"updated":"2014-07-01 08:38:31.000000000","message":"By \"dead loop\" do you mean that the directed dependency graph between combination alarms and their underpinning alarm may include cycles?","commit_id":"2bdd4efdb2817e6a9d2c7fb540c2f607716a5d32"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"80eb31aedb640c406971b5b4d8de5a418ccef090","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* API doesn\u0027t handle the dependency"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    * Dead loop will be introduced when update alarm"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        When we update an alarm, we need to check if it introduces dead loop,"},{"line_number":105,"context_line":"        if it does, then this operation will fail with 400."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_b24b0686","line":102,"in_reply_to":"baada198_f6f7a38a","updated":"2014-11-07 03:49:42.000000000","message":"Yes, what I mean is circular dependency, maybe dead loop is a bit confuse because it has stuck, crash, etc meaning","commit_id":"2bdd4efdb2817e6a9d2c7fb540c2f607716a5d32"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"1a698dbcebe2cbf21ab921e83203078077f83dab","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        When we update an alarm, we need to check if it introduces dead loop,"},{"line_number":105,"context_line":"        if it does, then this operation will fail with 400."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        To detect dead loop, we devide alarms to good alarms, and other alarms."},{"line_number":108,"context_line":"        Good alarms initially is set of threshold alarms, then if we find an"},{"line_number":109,"context_line":"        combination alarm which depends alarms only in good alarms, then it is"},{"line_number":110,"context_line":"        a good alarm too, add it to that set. Finally, if all alarms are good"}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_36c4bb3f","line":107,"updated":"2014-07-01 08:38:31.000000000","message":"s/devide/divide/","commit_id":"2bdd4efdb2817e6a9d2c7fb540c2f607716a5d32"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"80eb31aedb640c406971b5b4d8de5a418ccef090","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        When we update an alarm, we need to check if it introduces dead loop,"},{"line_number":105,"context_line":"        if it does, then this operation will fail with 400."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        To detect dead loop, we devide alarms to good alarms, and other alarms."},{"line_number":108,"context_line":"        Good alarms initially is set of threshold alarms, then if we find an"},{"line_number":109,"context_line":"        combination alarm which depends alarms only in good alarms, then it is"},{"line_number":110,"context_line":"        a good alarm too, add it to that set. Finally, if all alarms are good"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_d24ed295","line":107,"in_reply_to":"baada198_36c4bb3f","updated":"2014-11-07 03:49:42.000000000","message":"Done","commit_id":"2bdd4efdb2817e6a9d2c7fb540c2f607716a5d32"}],"specs/kilo/resolve-combination-alarm-dependency-chain.rst":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"ef3a774d3ab578bd3b92999db593056b3d016892","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    * all threshold alarm should be evaluated firstly, because they have no"},{"line_number":90,"context_line":"      dependency"},{"line_number":91,"context_line":"    * if a combination alarm depends on alarms which all have been evaluated,"},{"line_number":92,"context_line":"      then it can be evaluated"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    The two rule can ensure all alarms are evaluated by their dependency. When"},{"line_number":95,"context_line":"    we finish the process, if we get alarms not evaluated, then there is a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a890539_5b91b850","line":92,"updated":"2014-12-04 08:46:31.000000000","message":"How do you know if an alarm is evaluated or not? \n\nAlarms can be distributed using coordination to different alarm evaluate services to be evaluated, suppose alarm-eval-A is evaluating ta01/ta02, while at the same periodical internval time frame, alarm-eval-B is trying to evaluate ca01, what\u0027s the result would be?","commit_id":"98e3863e8e7188e76cbe1cede71edcb941d277f3"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"52fb34cf65a9e0b99ddd71718f7dc84c7987ae62","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    * all threshold alarm should be evaluated firstly, because they have no"},{"line_number":90,"context_line":"      dependency"},{"line_number":91,"context_line":"    * if a combination alarm depends on alarms which all have been evaluated,"},{"line_number":92,"context_line":"      then it can be evaluated"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    The two rule can ensure all alarms are evaluated by their dependency. When"},{"line_number":95,"context_line":"    we finish the process, if we get alarms not evaluated, then there is a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a890539_a95da47e","line":92,"in_reply_to":"5a890539_5b91b850","updated":"2014-12-06 14:35:49.000000000","message":"1. seems miss a step: if a combination alarm only depends threshold alarm, then it can be evaluated. \n\nI will add it to this spec\n\n2. for coordination scenario, things get more complicated, I didn\u0027t consider this when draft this spec, let me do some research, and hope there is an answer.\n\nThanks for your helpful review!","commit_id":"98e3863e8e7188e76cbe1cede71edcb941d277f3"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"ef3a774d3ab578bd3b92999db593056b3d016892","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    The two rule can ensure all alarms are evaluated by their dependency. When"},{"line_number":95,"context_line":"    we finish the process, if we get alarms not evaluated, then there is a"},{"line_number":96,"context_line":"    circular dependency, we can warn the operator in logs, or just ignore those"},{"line_number":97,"context_line":"    alarms. The API enhencement can avoid such scenario."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* API doesn\u0027t handle the dependency"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a890539_fb96e43c","line":97,"updated":"2014-12-04 08:46:31.000000000","message":"This only works if all alarms are evaluated by a single alarm-evaluate service.","commit_id":"98e3863e8e7188e76cbe1cede71edcb941d277f3"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"52fb34cf65a9e0b99ddd71718f7dc84c7987ae62","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    The two rule can ensure all alarms are evaluated by their dependency. When"},{"line_number":95,"context_line":"    we finish the process, if we get alarms not evaluated, then there is a"},{"line_number":96,"context_line":"    circular dependency, we can warn the operator in logs, or just ignore those"},{"line_number":97,"context_line":"    alarms. The API enhencement can avoid such scenario."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* API doesn\u0027t handle the dependency"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a890539_c962f03c","line":97,"in_reply_to":"5a890539_fb96e43c","updated":"2014-12-06 14:35:49.000000000","message":"Yes, see my comment on L92","commit_id":"98e3863e8e7188e76cbe1cede71edcb941d277f3"}]}
