)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"b0e0d7e424b8b2a0ba83933c0b709618b182fb5e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"refactoring vitrage processes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"oslo service replaced by cotyledon"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: If33708e128d7aeb420a9aa79f71cfccd2b48dfb3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bf659307_00722e12","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":34},"updated":"2018-03-27 01:35:11.000000000","message":"What is the motivation? Could you elaborate a bit?","commit_id":"0a57d1566cc8351fc160b7a8f525415db51f1489"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"765a4ae0ee1a2d6be77b7e2e7b8523b370b904f5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"refactoring vitrage processes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"oslo service replaced by cotyledon"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: If33708e128d7aeb420a9aa79f71cfccd2b48dfb3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bf659307_7a41510b","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":34},"in_reply_to":"bf659307_00722e12","updated":"2018-03-27 06:55:44.000000000","message":"Motivation:\nOslo service uses eventlet and green threads for timers and threads. In Vitrage we use real threads and multiprocessing. it seems this combination causes unexpected behavior (such as timers not running, processes not starting) so the entire solution is very delicate to changes.\n\nAs part of the ongoing effort to use real threads (previously, monkeypatching was removed) this commit solves issues encountered in rpc_collector commit.\nThis commit also sorts out unnecessary complications in the application.","commit_id":"0a57d1566cc8351fc160b7a8f525415db51f1489"}],"vitrage/cli/graph.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"def main():"},{"line_number":28,"context_line":"    \"\"\"Starts all the Entity graph services"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    1. Starts the Entity graph service"},{"line_number":31,"context_line":"    2. Starts the api_handler service"},{"line_number":32,"context_line":"    3. Starts the Consistency service"},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    print(VITRAGE_TITLE)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_a37a8821","line":32,"range":{"start_line":30,"start_character":0,"end_line":32,"end_character":37},"updated":"2018-03-26 11:27:33.000000000","message":"Please update the comment","commit_id":"bf8e7f86cba80591db8c87ca1743ad5b93b3b7c4"}],"vitrage/entity_graph/graph_init.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def run(self):"},{"line_number":47,"context_line":"        LOG.info(\u0027Init Started\u0027)"},{"line_number":48,"context_line":"        self.events_coordination.start()"},{"line_number":49,"context_line":"        self._wait_for_all_end_messages()"},{"line_number":50,"context_line":"        self.scheduler.start_periodic_tasks()"},{"line_number":51,"context_line":"        self.processor.start_notifier()"},{"line_number":52,"context_line":"        spawn(self.workers.submit_start_evaluations)"},{"line_number":53,"context_line":"        self.workers.run()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def process_event(self, event):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_fe1812d4","line":52,"range":{"start_line":48,"start_character":8,"end_line":52,"end_character":52},"updated":"2018-03-26 11:27:33.000000000","message":"I would add some log messages in the middle, I think it can be useful to know the stage of the init (e.g. before/after running the evaluator)","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"61f2281aa98d636d5a093370f33d399b9a71f4ad","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def run(self):"},{"line_number":47,"context_line":"        LOG.info(\u0027Init Started\u0027)"},{"line_number":48,"context_line":"        self.events_coordination.start()"},{"line_number":49,"context_line":"        self._wait_for_all_end_messages()"},{"line_number":50,"context_line":"        self.scheduler.start_periodic_tasks()"},{"line_number":51,"context_line":"        self.processor.start_notifier()"},{"line_number":52,"context_line":"        spawn(self.workers.submit_start_evaluations)"},{"line_number":53,"context_line":"        self.workers.run()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def process_event(self, event):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_0fc352ef","line":52,"range":{"start_line":48,"start_character":8,"end_line":52,"end_character":52},"in_reply_to":"bf659307_fe1812d4","updated":"2018-03-26 13:04:19.000000000","message":"Each of these methods log their status","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.workers.run()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def process_event(self, event):"},{"line_number":56,"context_line":"        if event.get(\u0027template_action\u0027):"},{"line_number":57,"context_line":"            self.workers.submit_template_event(event)"},{"line_number":58,"context_line":"            self.workers.submit_evaluators_reload_templates()"},{"line_number":59,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_5e27be13","line":56,"range":{"start_line":56,"start_character":21,"end_line":56,"end_character":38},"updated":"2018-03-26 11:27:33.000000000","message":"Should be defined as a constant","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self._do_work_func \u003d do_work"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        self._low_pri_listener \u003d self._init_listener("},{"line_number":96,"context_line":"            topic_low, self._do_low_priority_work)"},{"line_number":97,"context_line":"        self._high_pri_listener \u003d self._init_listener("},{"line_number":98,"context_line":"            topic_high, self._do_high_priority_work)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_be87fad7","line":95,"range":{"start_line":95,"start_character":18,"end_line":95,"end_character":21},"updated":"2018-03-26 11:27:33.000000000","message":"I think that \u0027priority\u0027 is better","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def _do_high_priority_work(self, event):"},{"line_number":115,"context_line":"        self._lock.acquire()"},{"line_number":116,"context_line":"        self._do_work_func(event)"},{"line_number":117,"context_line":"        self._high_event_finish_time \u003d time.time()"},{"line_number":118,"context_line":"        self._lock.release()"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def _do_low_priority_work(self, event):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_5eda5ee9","line":117,"range":{"start_line":117,"start_character":13,"end_line":117,"end_character":36},"updated":"2018-03-26 11:27:33.000000000","message":"_high_priority_finish_time?","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"}],"vitrage/entity_graph/scheduler.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                except Exception as e:"},{"line_number":57,"context_line":"                    LOG.exception(\u0027persist failed %s\u0027, e)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.periodic.add(persist)"},{"line_number":60,"context_line":"        LOG.info(\"periodic task - persistor %s\", spacing)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def add_consistency_timer(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_7194338c","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":34},"updated":"2018-03-26 11:27:33.000000000","message":"Only if the persistor is not None","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                    LOG.exception(\u0027persist failed %s\u0027, e)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.periodic.add(persist)"},{"line_number":60,"context_line":"        LOG.info(\"periodic task - persistor %s\", spacing)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def add_consistency_timer(self):"},{"line_number":63,"context_line":"        spacing \u003d self.conf.datasources.snapshots_interval"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_917d4770","line":60,"range":{"start_line":60,"start_character":34,"end_line":60,"end_character":46},"updated":"2018-03-26 11:27:33.000000000","message":"Indicate that the %s is the spacing/interval","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                LOG.exception(\u0027run_consistency failed %s\u0027, e)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.periodic.add(run_consistency)"},{"line_number":73,"context_line":"        LOG.info(\"periodic task - run_consistency %s\", spacing)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_91f22706","line":73,"range":{"start_line":73,"start_character":34,"end_line":73,"end_character":52},"updated":"2018-03-26 11:27:33.000000000","message":"Same here","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"}],"vitrage/entity_graph/workers.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self._conf \u003d conf"},{"line_number":46,"context_line":"        self._entity_graph \u003d entity_graph"},{"line_number":47,"context_line":"        self._db \u003d db"},{"line_number":48,"context_line":"        self._evaluator_queues \u003d []"},{"line_number":49,"context_line":"        self._template_queues \u003d []"},{"line_number":50,"context_line":"        self._all_queues \u003d []"},{"line_number":51,"context_line":"        self.add_evaluator_workers()"},{"line_number":52,"context_line":"        self.add_template_workers()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def add_evaluator_workers(self):"},{"line_number":55,"context_line":"        if self._evaluator_queues:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_3118fb1b","line":52,"range":{"start_line":48,"start_character":0,"end_line":52,"end_character":35},"updated":"2018-03-26 11:27:33.000000000","message":"Please add a comment about the difference between evaluator_worker/queue and template_worker/queue","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":81,"context_line":"         each of the evaluators, causing them to update their own graph."},{"line_number":82,"context_line":"        \"\"\""},{"line_number":83,"context_line":"        self._submit_and_wait("},{"line_number":84,"context_line":"            self._all_queues,"},{"line_number":85,"context_line":"            (GRAPH_UPDATE, before, current, is_vertex))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def submit_start_evaluations(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_31ed5bef","line":84,"range":{"start_line":84,"start_character":17,"end_line":84,"end_character":28},"updated":"2018-03-26 11:27:33.000000000","message":"Is it needed also by the template workers?","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"61f2281aa98d636d5a093370f33d399b9a71f4ad","unresolved":false,"context_lines":[{"line_number":81,"context_line":"         each of the evaluators, causing them to update their own graph."},{"line_number":82,"context_line":"        \"\"\""},{"line_number":83,"context_line":"        self._submit_and_wait("},{"line_number":84,"context_line":"            self._all_queues,"},{"line_number":85,"context_line":"            (GRAPH_UPDATE, before, current, is_vertex))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def submit_start_evaluations(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_8a24300f","line":84,"range":{"start_line":84,"start_character":17,"end_line":84,"end_character":28},"in_reply_to":"bf659307_31ed5bef","updated":"2018-03-26 13:04:19.000000000","message":"yes, we need to keep their graph updated","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def submit_start_evaluations(self):"},{"line_number":88,"context_line":"        self._submit_and_wait(self._evaluator_queues, (START_EVALUATION,))"},{"line_number":89,"context_line":"        self._entity_graph.subscribe(self.submit_graph_update)"},{"line_number":90,"context_line":"        LOG.info(\u0027Init Finished\u0027)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def submit_evaluators_reload_templates(self):"},{"line_number":93,"context_line":"        self._submit_and_wait(self._evaluator_queues, (RELOAD_TEMPLATES,))"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_d1a09fa8","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":33},"updated":"2018-03-26 11:27:33.000000000","message":"This message is strange here. How about writing it by the class that calls this function?","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"61f2281aa98d636d5a093370f33d399b9a71f4ad","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def submit_start_evaluations(self):"},{"line_number":88,"context_line":"        self._submit_and_wait(self._evaluator_queues, (START_EVALUATION,))"},{"line_number":89,"context_line":"        self._entity_graph.subscribe(self.submit_graph_update)"},{"line_number":90,"context_line":"        LOG.info(\u0027Init Finished\u0027)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def submit_evaluators_reload_templates(self):"},{"line_number":93,"context_line":"        self._submit_and_wait(self._evaluator_queues, (RELOAD_TEMPLATES,))"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_ea784cf9","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":33},"in_reply_to":"bf659307_d1a09fa8","updated":"2018-03-26 13:04:19.000000000","message":"It\u0027s either here or not at all, as this method runs in a thread that finishes here.","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def _submit_and_wait(queues, payload):"},{"line_number":123,"context_line":"        for q in queues:"},{"line_number":124,"context_line":"            q.put(payload)"},{"line_number":125,"context_line":"        # time.sleep(0)  # context switch before join"},{"line_number":126,"context_line":"        for q in queues:"},{"line_number":127,"context_line":"            q.join()"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_b1ebabae","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":53},"updated":"2018-03-26 11:27:33.000000000","message":"Can it be deleted?","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"61f2281aa98d636d5a093370f33d399b9a71f4ad","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def _submit_and_wait(queues, payload):"},{"line_number":123,"context_line":"        for q in queues:"},{"line_number":124,"context_line":"            q.put(payload)"},{"line_number":125,"context_line":"        # time.sleep(0)  # context switch before join"},{"line_number":126,"context_line":"        for q in queues:"},{"line_number":127,"context_line":"            q.join()"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_8a699026","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":53},"in_reply_to":"bf659307_b1ebabae","updated":"2018-03-26 13:04:19.000000000","message":"sure","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                next_task \u003d self._task_queue.get()"},{"line_number":166,"context_line":"                self.do_task(next_task)"},{"line_number":167,"context_line":"            except Exception as e:"},{"line_number":168,"context_line":"                LOG.exception(\"Graph may not be in sync: exception %s\", e)"},{"line_number":169,"context_line":"            self._task_queue.task_done()"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def do_task(self, task):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_f1504335","line":168,"range":{"start_line":168,"start_character":31,"end_line":168,"end_character":55},"updated":"2018-03-26 11:27:33.000000000","message":"This is the right message?","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"61f2281aa98d636d5a093370f33d399b9a71f4ad","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                next_task \u003d self._task_queue.get()"},{"line_number":166,"context_line":"                self.do_task(next_task)"},{"line_number":167,"context_line":"            except Exception as e:"},{"line_number":168,"context_line":"                LOG.exception(\"Graph may not be in sync: exception %s\", e)"},{"line_number":169,"context_line":"            self._task_queue.task_done()"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def do_task(self, task):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_cad548bb","line":168,"range":{"start_line":168,"start_character":31,"end_line":168,"end_character":55},"in_reply_to":"bf659307_f1504335","updated":"2018-03-26 13:04:19.000000000","message":"Yes, this means the worker was unable to process the message and may not be correct.","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def do_task(self, task):"},{"line_number":172,"context_line":"        action \u003d task[0]"},{"line_number":173,"context_line":"        if action \u003d\u003d GRAPH_UPDATE:"},{"line_number":174,"context_line":"            (action, before, current, is_vertex) \u003d task"},{"line_number":175,"context_line":"            self._graph_update(before, current, is_vertex)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_f135a3f8","line":173,"range":{"start_line":173,"start_character":8,"end_line":173,"end_character":34},"updated":"2018-03-26 11:27:33.000000000","message":"else?","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"61f2281aa98d636d5a093370f33d399b9a71f4ad","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def do_task(self, task):"},{"line_number":172,"context_line":"        action \u003d task[0]"},{"line_number":173,"context_line":"        if action \u003d\u003d GRAPH_UPDATE:"},{"line_number":174,"context_line":"            (action, before, current, is_vertex) \u003d task"},{"line_number":175,"context_line":"            self._graph_update(before, current, is_vertex)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_8aae702c","line":173,"range":{"start_line":173,"start_character":8,"end_line":173,"end_character":34},"in_reply_to":"bf659307_f135a3f8","updated":"2018-03-26 13:04:19.000000000","message":"It will be handled by the child class","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"b4b301ebbf90dd3aa5795463fe906faf6413d6b4","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            self._graph_update(before, current, is_vertex)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _graph_update(self, before, current, is_vertex):"},{"line_number":178,"context_line":"        if current:"},{"line_number":179,"context_line":"            if is_vertex:"},{"line_number":180,"context_line":"                self._entity_graph.add_vertex(current)"},{"line_number":181,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_112e17a5","line":178,"range":{"start_line":178,"start_character":8,"end_line":178,"end_character":19},"updated":"2018-03-26 11:27:33.000000000","message":"else?","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"61f2281aa98d636d5a093370f33d399b9a71f4ad","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            self._graph_update(before, current, is_vertex)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _graph_update(self, before, current, is_vertex):"},{"line_number":178,"context_line":"        if current:"},{"line_number":179,"context_line":"            if is_vertex:"},{"line_number":180,"context_line":"                self._entity_graph.add_vertex(current)"},{"line_number":181,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf659307_8a8510b0","line":178,"range":{"start_line":178,"start_character":8,"end_line":178,"end_character":19},"in_reply_to":"bf659307_112e17a5","updated":"2018-03-26 13:04:19.000000000","message":"It\u0027s there :)","commit_id":"5df1ee2f1b104b3168508766f9994b27a14642e5"}]}
