)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"121376c729ab93ec8100e6e7d6a5a4bf37cdde76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2ce2c3f7_f7eba24d","updated":"2021-12-16 16:22:23.000000000","message":"Thanks, well done!","commit_id":"17e2c925c00b5843cdf57d6c80e6e7b834301fc5"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"59642d6a23294545395509d146531f768b31f872","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8912e6e0_630fbaf6","updated":"2021-12-17 07:57:58.000000000","message":"looks sane ;)","commit_id":"376d6f088058cb013b13b3af75f8ee69b9e729ae"},{"author":{"_account_id":20676,"name":"daniel.pawlik","display_name":"Daniel Pawlik","email":"dpawlik@redhat.com","username":"daniel.pawlik"},"change_message_id":"a1e2e74a62a42c75ad2c800e82d10e681f7e1d92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ab5f6fff_4405b60f","updated":"2021-12-20 09:54:57.000000000","message":"recheck","commit_id":"376d6f088058cb013b13b3af75f8ee69b9e729ae"}],"logscraper/logscraper.py":[{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"351810ac35a0b4c929a7e237aebceaf97879177c","unresolved":true,"context_lines":[{"line_number":449,"context_line":"                                      args.max_skipped, config.checkpoint):"},{"line_number":450,"context_line":"        logging.debug(\"Working on build %s\" % build[\u0027uuid\u0027])"},{"line_number":451,"context_line":"        # add missing informations"},{"line_number":452,"context_line":"        build[\"tenant\"] \u003d config.tenant"},{"line_number":453,"context_line":"        builds.append(build)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    logging.info(\"Processing %d builds\", len(builds))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9c7e4061_6b34f89d","line":452,"updated":"2021-12-16 15:52:16.000000000","message":"instead of ziping, you can attach the args here too, might be safer because zip may not be serializable for multiprocessing.","commit_id":"6a62b3c69e25f8c0b1940a7111ec993b50243b97"},{"author":{"_account_id":20676,"name":"daniel.pawlik","display_name":"Daniel Pawlik","email":"dpawlik@redhat.com","username":"daniel.pawlik"},"change_message_id":"f4b53436eff60effe8e064402ebe61a12f2eb26a","unresolved":true,"context_lines":[{"line_number":449,"context_line":"                                      args.max_skipped, config.checkpoint):"},{"line_number":450,"context_line":"        logging.debug(\"Working on build %s\" % build[\u0027uuid\u0027])"},{"line_number":451,"context_line":"        # add missing informations"},{"line_number":452,"context_line":"        build[\"tenant\"] \u003d config.tenant"},{"line_number":453,"context_line":"        builds.append(build)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    logging.info(\"Processing %d builds\", len(builds))"}],"source_content_type":"text/x-python","patch_set":1,"id":"a6e305f4_2a213253","line":452,"in_reply_to":"9c7e4061_6b34f89d","updated":"2021-12-16 16:03:59.000000000","message":"good idea","commit_id":"6a62b3c69e25f8c0b1940a7111ec993b50243b97"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"121376c729ab93ec8100e6e7d6a5a4bf37cdde76","unresolved":true,"context_lines":[{"line_number":401,"context_line":""},{"line_number":402,"context_line":"def run_build(build):"},{"line_number":403,"context_line":"    \"\"\"Submit job informations into log processing system. \"\"\""},{"line_number":404,"context_line":"    args \u003d build[\"build_args\"]"},{"line_number":405,"context_line":"    build.pop(\"build_args\")"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    logging.info("},{"line_number":408,"context_line":"        \"Processing logs for %s | %s | %s | %s\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa6eb6b_9bbbf98f","line":405,"range":{"start_line":404,"start_character":0,"end_line":405,"end_character":27},"updated":"2021-12-16 16:22:23.000000000","message":"nit: you can do:\n\n  args \u003d build.pop(\"build_args\")\n\ne.g. pop returns the value being poped.","commit_id":"17e2c925c00b5843cdf57d6c80e6e7b834301fc5"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"59642d6a23294545395509d146531f768b31f872","unresolved":true,"context_lines":[{"line_number":377,"context_line":"###############################################################################"},{"line_number":378,"context_line":"#                              Log scraper                                    #"},{"line_number":379,"context_line":"###############################################################################"},{"line_number":380,"context_line":"def check_specified_files(job_result, insecure):"},{"line_number":381,"context_line":"    \"\"\"Return list of specified files if they exists on logserver. \"\"\""},{"line_number":382,"context_line":"    available_files \u003d []"},{"line_number":383,"context_line":"    for f in file_to_check:"}],"source_content_type":"text/x-python","patch_set":4,"id":"617fe455_fa1c00e4","line":380,"range":{"start_line":380,"start_character":38,"end_line":380,"end_character":46},"updated":"2021-12-17 07:57:58.000000000","message":"that isn\u0027t mentioned in the commit message","commit_id":"376d6f088058cb013b13b3af75f8ee69b9e729ae"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"0bed276e89f6586433fed8a8310c1bcee0aefd84","unresolved":true,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    logging.info(\"Processing %d builds\", len(builds))"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    if args.logstash_url and not check_connection(args.logstash_url):"},{"line_number":459,"context_line":"        logging.critical(\"Can not connect to logstash %s. \""},{"line_number":460,"context_line":"                         \"Is it up?\" % args.logstash_url)"},{"line_number":461,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":4,"id":"4415ba66_b2f6c1a6","line":458,"updated":"2021-12-17 08:48:24.000000000","message":"I know that\u0027s not related to that patch but that sounds weird to do that check in the middle of the scrapper process. Could this be move outside in a proper pre_checks function called by the main function and before run_scrapping ?","commit_id":"376d6f088058cb013b13b3af75f8ee69b9e729ae"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"8b19adb159d94c863950d0f5b464718f9d03d8ff","unresolved":true,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    logging.info(\"Processing %d builds\", len(builds))"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    if args.logstash_url and not check_connection(args.logstash_url):"},{"line_number":459,"context_line":"        logging.critical(\"Can not connect to logstash %s. \""},{"line_number":460,"context_line":"                         \"Is it up?\" % args.logstash_url)"},{"line_number":461,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":4,"id":"c5f4226d_a3acb760","line":458,"in_reply_to":"3bbfe348_e3311dea","updated":"2021-12-17 11:22:12.000000000","message":"Alright that makes sense !","commit_id":"376d6f088058cb013b13b3af75f8ee69b9e729ae"},{"author":{"_account_id":20676,"name":"daniel.pawlik","display_name":"Daniel Pawlik","email":"dpawlik@redhat.com","username":"daniel.pawlik"},"change_message_id":"651696b6e23842788d1d6925a8d5241e2d01276b","unresolved":true,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    logging.info(\"Processing %d builds\", len(builds))"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    if args.logstash_url and not check_connection(args.logstash_url):"},{"line_number":459,"context_line":"        logging.critical(\"Can not connect to logstash %s. \""},{"line_number":460,"context_line":"                         \"Is it up?\" % args.logstash_url)"},{"line_number":461,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":4,"id":"3bbfe348_e3311dea","line":458,"in_reply_to":"4415ba66_b2f6c1a6","updated":"2021-12-17 10:42:57.000000000","message":"normally if logstash_url is provided, that check should be done for each build before it goes to gearman worker, but it will storm a logstash host. In that case, we check in that place and return back and wait for a while before sending new logs (also the checkpoint file will be not updated, which is very important).\nFeel free to make a proposal to improve the code. So far it has been done in very simple way","commit_id":"376d6f088058cb013b13b3af75f8ee69b9e729ae"}]}
