)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"5f977aa5b26e9a0d83849ba82f4075af71536a35","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitry Ilyin \u003cdilyin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-03 21:21:55 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add retries to the openstack command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Retry and timeout openstack comand"},{"line_number":10,"context_line":"* Improve specs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da20952f_8c5f970e","line":7,"updated":"2015-09-03 18:39:34.000000000","message":"When submitting a patch to any project, a commit message explaining your motivation and the different issues we\u0027re solving is always useful for reviewers to can take some time to review your code.\n\nI would appreciate if we spend a bit of time to writing it.\n\nPlease read https://wiki.openstack.org/wiki/GitCommitMessages\n\nThanks","commit_id":"596a486b47bca7b003253bdff245cdd900fa7c06"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"b3e17986ea723ac7de0951085f423ce3401b4092","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add retries to the openstack command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Sometimes \"openstack\" command can hand of fail"},{"line_number":10,"context_line":"due to keystone problems or network issues."},{"line_number":11,"context_line":"This path adds retries to work around these"},{"line_number":12,"context_line":"situations."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a29b11f_3ab6d53d","line":9,"updated":"2015-10-20 13:15:55.000000000","message":"Sometimes openstackclient can hang if keystone API fails to respond to requests.","commit_id":"e0a9da7c913e1af43e4fe4ef30ebec47975dbb7b"}],"lib/puppet/provider/openstack.rb":[{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"b3e17986ea723ac7de0951085f423ce3401b4092","unresolved":false,"context_lines":[{"line_number":45,"context_line":"      Timeout.timeout(command_timeout) do"},{"line_number":46,"context_line":"        openstack_command *args"},{"line_number":47,"context_line":"      end"},{"line_number":48,"context_line":"    rescue Timeout::Error"},{"line_number":49,"context_line":"      raise Puppet::ExecutionFailure, \"Command: \u0027openstack #{args.join \u0027 \u0027}\u0027 has been running for more then #{command_timeout} seconds!\""},{"line_number":50,"context_line":"    end"},{"line_number":51,"context_line":"  end"}],"source_content_type":"text/x-ruby","patch_set":5,"id":"3a29b11f_fabe1dd3","line":48,"updated":"2015-10-20 13:15:55.000000000","message":"If possible in this bug, we should actually kill the PID we forked if we reach Timeout. If not possible, let\u0027s file a new bug to cover that. If you don\u0027t kill it, it will eventually consume all available memory and destroy the node (after a few days)","commit_id":"e0a9da7c913e1af43e4fe4ef30ebec47975dbb7b"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"b3e17986ea723ac7de0951085f423ce3401b4092","unresolved":false,"context_lines":[{"line_number":80,"context_line":"              end"},{"line_number":81,"context_line":"              hash"},{"line_number":82,"context_line":"            end"},{"line_number":83,"context_line":"          elsif action \u003d\u003d \u0027show\u0027 or action \u003d\u003d \u0027create\u0027"},{"line_number":84,"context_line":"            rv \u003d {}"},{"line_number":85,"context_line":"            # shell output is:"},{"line_number":86,"context_line":"            # name\u003d\"value1\""}],"source_content_type":"text/x-ruby","patch_set":5,"id":"3a29b11f_ba5c25ee","line":83,"updated":"2015-10-20 13:15:55.000000000","message":"This should actually match remove and delete actions too.","commit_id":"e0a9da7c913e1af43e4fe4ef30ebec47975dbb7b"},{"author":{"_account_id":7195,"name":"Matthew Mosesohn","email":"raytrac3r@gmail.com","username":"mmosesohn"},"change_message_id":"a81fd3a7332d95aaa6cac078ed0d69d9d816b75e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  # this actions are not idempotent and retries can cause"},{"line_number":17,"context_line":"  # duplications or endless loops"},{"line_number":18,"context_line":"  def self.no_retry_actions"},{"line_number":19,"context_line":"    %w(create remove delete)"},{"line_number":20,"context_line":"  end"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  # timeout the openstack command"}],"source_content_type":"text/x-ruby","patch_set":6,"id":"3a29b11f_e74f65bb","line":19,"updated":"2015-10-20 13:55:32.000000000","message":"Action handling looks good. I missed it before","commit_id":"15948d4e473bdeee3f753bfccd23b88c15e61c6f"},{"author":{"_account_id":7604,"name":"Sergey Kolekonov","email":"skolekonov@mirantis.com","username":"skolekonov"},"change_message_id":"819facf7428d0749d9fc2e7b1f0a2efd41697e31","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  # with underscores instead of spaces"},{"line_number":60,"context_line":"  def self.request(service, action, properties, credentials\u003dnil)"},{"line_number":61,"context_line":"    env \u003d credentials ? credentials.to_env : {}"},{"line_number":62,"context_line":"    debug_env \u003d env.map { |k,v| \"#{k}\u003d\u0027#{v}\u0027\" }.join(\u0027 \u0027) + (env.any? ? \u0027 \u0027 : \u0027\u0027)"},{"line_number":63,"context_line":"    debug \"Request: \u0027#{debug_env}#{service} #{action} #{properties.inspect}\u0027\""},{"line_number":64,"context_line":"    Puppet::Util.withenv(env) do"},{"line_number":65,"context_line":"      rv \u003d nil"}],"source_content_type":"text/x-ruby","patch_set":7,"id":"3a29b11f_7e533e6d","line":62,"updated":"2015-10-23 17:52:19.000000000","message":"Please remove all debug messages if the patch is ready for review/merge","commit_id":"764e2d26b34453f83fff1b2543f11fe4eb804b24"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"be81d6d750ae4f162449a44a8e58cd8e6d0345e6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  # after this number of seconds"},{"line_number":24,"context_line":"  # retry the command until the request_timeout"},{"line_number":25,"context_line":"  def self.command_timeout"},{"line_number":26,"context_line":"    20"},{"line_number":27,"context_line":"  end"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"  # timeout the entire request with error"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"3a7e1126_324c6f9d","line":26,"updated":"2015-12-21 07:29:51.000000000","message":"it was 10 before, how do you explain this change to 20?","commit_id":"49aadda64bbafd7671c909a909022b17997df2c9"},{"author":{"_account_id":14007,"name":"Maksym Yatsenko","email":"myatsenko@mirantis.com","username":"myatsenko"},"change_message_id":"05e4e6d5876d273de9a55e31131da78212d6b58e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  # after this number of seconds"},{"line_number":24,"context_line":"  # retry the command until the request_timeout"},{"line_number":25,"context_line":"  def self.command_timeout"},{"line_number":26,"context_line":"    20"},{"line_number":27,"context_line":"  end"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"  # timeout the entire request with error"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"3a7e1126_7d85e3cc","line":26,"in_reply_to":"3a7e1126_324c6f9d","updated":"2015-12-21 10:22:40.000000000","message":"The value of command_timeout parameter was updated from 10 to 20 as it was observed\nthat \"10\" value is not enough when sytem was overloaded.","commit_id":"49aadda64bbafd7671c909a909022b17997df2c9"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"be81d6d750ae4f162449a44a8e58cd8e6d0345e6","unresolved":false,"context_lines":[{"line_number":98,"context_line":"          break"},{"line_number":99,"context_line":"        rescue Puppet::ExecutionFailure \u003d\u003e exception"},{"line_number":100,"context_line":"          raise Puppet::Error::OpenstackUnauthorizedError, \u0027Could not authenticate\u0027 if exception.message \u003d~ /HTTP 40[13]/"},{"line_number":101,"context_line":"          raise exception if current_time \u003e end_time"},{"line_number":102,"context_line":"          raise exception if no_retry_actions.include? action"},{"line_number":103,"context_line":"          sleep retry_sleep"},{"line_number":104,"context_line":"          retry"}],"source_content_type":"text/x-ruby","patch_set":9,"id":"3a7e1126_5251fb34","line":101,"updated":"2015-12-21 07:29:51.000000000","message":"It would be great to keep debug message with the waiting time.","commit_id":"49aadda64bbafd7671c909a909022b17997df2c9"}],"spec/spec_helper.rb":[{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"fd535557969abf1dcd1ee123106ecb58c4c227ef","unresolved":false,"context_lines":[{"line_number":6,"context_line":"  return unless ENV[\u0027SPEC_PUPPET_DEBUG\u0027]"},{"line_number":7,"context_line":"  Puppet::Util::Log.level \u003d :debug"},{"line_number":8,"context_line":"  Puppet::Util::Log.newdestination(:console)"},{"line_number":9,"context_line":"end"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"RSpec.configure do |c|"},{"line_number":12,"context_line":"  c.alias_it_should_behave_like_to :it_configures, \u0027configures\u0027"}],"source_content_type":"text/x-ruby","patch_set":4,"id":"3a29b11f_bab42cf2","line":9,"updated":"2015-10-20 10:59:30.000000000","message":"This pattern looks not common for PO specs. But I found this very useful though. Would be nice to contribute this everywhere.","commit_id":"5afe4b1a0827ac85490945732e9958eed6423ebd"}]}
