{"action":"created","comment":{"url":"https://api.github.com/repos/jpmens/mqttwarn/pulls/comments/65172205","id":65172205,"diff_hunk":"@@ -26,8 +27,13 @@ def plugin(srv, item):\n     msg['From']         = sender\n     msg['X-Mailer']     = srv.SCRIPTNAME\n \n+    if not smtp_addresses:\n+        srv.logging.warn(\"Skipped sending SMTP notification to %s, \"\n+                         \"no addresses configured: %s\" % (item.target, smtp_addresses))","path":"services/smtp.py","position":14,"original_position":14,"commit_id":"1069b3c533dbe9806fc88374a9b8ddfa5f2ac848","original_commit_id":"1069b3c533dbe9806fc88374a9b8ddfa5f2ac848","user":{"login":"amotl","id":453543,"avatar_url":"https://avatars.githubusercontent.com/u/453543?v=3","gravatar_id":"","url":"https://api.github.com/users/amotl","html_url":"https://github.com/amotl","followers_url":"https://api.github.com/users/amotl/followers","following_url":"https://api.github.com/users/amotl/following{/other_user}","gists_url":"https://api.github.com/users/amotl/gists{/gist_id}","starred_url":"https://api.github.com/users/amotl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amotl/subscriptions","organizations_url":"https://api.github.com/users/amotl/orgs","repos_url":"https://api.github.com/users/amotl/repos","events_url":"https://api.github.com/users/amotl/events{/privacy}","received_events_url":"https://api.github.com/users/amotl/received_events","type":"User","site_admin":false},"body":"Sure, the second parameter will be None or an empty list. Thanks for spotting this!","created_at":"2016-05-31T12:32:56Z","updated_at":"2016-05-31T12:32:56Z","html_url":"https://github.com/jpmens/mqttwarn/pull/192#discussion_r65172205","pull_request_url":"https://api.github.com/repos/jpmens/mqttwarn/pulls/192","_links":{"self":{"href":"https://api.github.com/repos/jpmens/mqttwarn/pulls/comments/65172205"},"html":{"href":"https://github.com/jpmens/mqttwarn/pull/192#discussion_r65172205"},"pull_request":{"href":"https://api.github.com/repos/jpmens/mqttwarn/pulls/192"}}},"pull_request":{"url":"https://api.github.com/repos/jpmens/mqttwarn/pulls/192","id":71902175,"html_url":"https://github.com/jpmens/mqttwarn/pull/192","diff_url":"https://github.com/jpmens/mqttwarn/pull/192.diff","patch_url":"https://github.com/jpmens/mqttwarn/pull/192.patch","issue_url":"https://api.github.com/repos/jpmens/mqttwarn/issues/192","number":192,"state":"closed","locked":false,"title":"Various improvements","user":{"login":"amotl","id":453543,"avatar_url":"https://avatars.githubusercontent.com/u/453543?v=3","gravatar_id":"","url":"https://api.github.com/users/amotl","html_url":"https://github.com/amotl","followers_url":"https://api.github.com/users/amotl/followers","following_url":"https://api.github.com/users/amotl/following{/other_user}","gists_url":"https://api.github.com/users/amotl/gists{/gist_id}","starred_url":"https://api.github.com/users/amotl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amotl/subscriptions","organizations_url":"https://api.github.com/users/amotl/orgs","repos_url":"https://api.github.com/users/amotl/repos","events_url":"https://api.github.com/users/amotl/events{/privacy}","received_events_url":"https://api.github.com/users/amotl/received_events","type":"User","site_admin":false},"body":"Dear Jan-Piet and Ben,\r\n\r\nwe have another round of improvements to *mqttwarn* ready. This is the foundation of the implementation of our prototypic Hiveeyes Schwarmalarm #193 on top of *mqttwarn*, which is the preliminary alerting component of the [Hiveeyes system]. We are building upon one of our former contributions, see also [Incorporate topic names into topic targets] and #169, #170.\r\n\r\nThe changes are mainly about overall robustness, especially when having more pressure on the job queue. The shutdown behavior of *mqttwarn* hasn't been optimal before, we often had cases where *mqttwarn* wouldn't stop at all on `SIGTERM` because the worker (`def processor`) already had been shut down while `def cleanup` was waiting for the notification job queue to drain, resulting in deadlock situations only to be mitigated by `kill -9` on our systems.\r\n\r\nAlong the lines, we added and improved some log messages here and there, integrated some minor features not worth a separate pull request in our opinion and also added a conveniency routine to monkeypatch the xmpppy library code for mitigating a known and popular problem when connecting to XMPP servers with TLS support (can be used optionally, thus non-invasive).\r\n\r\nThe details:\r\n- Make “num_workers” setting configurable\r\n- Add possibility to send log messages to stderr\r\n- Improve reporting about log level\r\n- Log warning message if transform_data cannot be formatted properly\r\n- Improve worker robustness and shutdown behavior re. job queue draining\r\n- Improve logging and robustness for service plugins smtp and xmpp\r\n- Add monkey patch for xmpp service plugin to mitigate problem with SSLSocket X.509 issuer\r\n\r\nPlease let us know what you think about this. In the meanwhile, we will prepare the main PR mentioned above. Thanks in advance for your efforts!\r\n\r\nCheers, Andreas.\r\n\r\n[Hiveeyes system]: https://hiveeyes.org/docs/system/\r\n[Incorporate topic names into topic targets]: https://github.com/jpmens/mqttwarn/wiki/Incorporating-topic-names#incorporate-topic-names-into-topic-targets\r\n","created_at":"2016-05-30T13:32:03Z","updated_at":"2016-05-31T12:32:56Z","closed_at":"2016-05-31T06:31:33Z","merged_at":"2016-05-31T06:31:33Z","merge_commit_sha":"1069b3c533dbe9806fc88374a9b8ddfa5f2ac848","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/jpmens/mqttwarn/pulls/192/commits","review_comments_url":"https://api.github.com/repos/jpmens/mqttwarn/pulls/192/comments","review_comment_url":"https://api.github.com/repos/jpmens/mqttwarn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/jpmens/mqttwarn/issues/192/comments","statuses_url":"https://api.github.com/repos/jpmens/mqttwarn/statuses/1069b3c533dbe9806fc88374a9b8ddfa5f2ac848","head":{"label":"hiveeyes:wip/various-improvements","ref":"wip/various-improvements","sha":"1069b3c533dbe9806fc88374a9b8ddfa5f2ac848","user":{"login":"hiveeyes","id":15195291,"avatar_url":"https://avatars.githubusercontent.com/u/15195291?v=3","gravatar_id":"","url":"https://api.github.com/users/hiveeyes","html_url":"https://github.com/hiveeyes","followers_url":"https://api.github.com/users/hiveeyes/followers","following_url":"https://api.github.com/users/hiveeyes/following{/other_user}","gists_url":"https://api.github.com/users/hiveeyes/gists{/gist_id}","starred_url":"https://api.github.com/users/hiveeyes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hiveeyes/subscriptions","organizations_url":"https://api.github.com/users/hiveeyes/orgs","repos_url":"https://api.github.com/users/hiveeyes/repos","events_url":"https://api.github.com/users/hiveeyes/events{/privacy}","received_events_url":"https://api.github.com/users/hiveeyes/received_events","type":"Organization","site_admin":false},"repo":{"id":51622167,"name":"mqttwarn","full_name":"hiveeyes/mqttwarn","owner":{"login":"hiveeyes","id":15195291,"avatar_url":"https://avatars.githubusercontent.com/u/15195291?v=3","gravatar_id":"","url":"https://api.github.com/users/hiveeyes","html_url":"https://github.com/hiveeyes","followers_url":"https://api.github.com/users/hiveeyes/followers","following_url":"https://api.github.com/users/hiveeyes/following{/other_user}","gists_url":"https://api.github.com/users/hiveeyes/gists{/gist_id}","starred_url":"https://api.github.com/users/hiveeyes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hiveeyes/subscriptions","organizations_url":"https://api.github.com/users/hiveeyes/orgs","repos_url":"https://api.github.com/users/hiveeyes/repos","events_url":"https://api.github.com/users/hiveeyes/events{/privacy}","received_events_url":"https://api.github.com/users/hiveeyes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hiveeyes/mqttwarn","description":"Subscribe to MQTT topics (with wildcards) and notifiy pluggable services","fork":true,"url":"https://api.github.com/repos/hiveeyes/mqttwarn","forks_url":"https://api.github.com/repos/hiveeyes/mqttwarn/forks","keys_url":"https://api.github.com/repos/hiveeyes/mqttwarn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hiveeyes/mqttwarn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hiveeyes/mqttwarn/teams","hooks_url":"https://api.github.com/repos/hiveeyes/mqttwarn/hooks","issue_events_url":"https://api.github.com/repos/hiveeyes/mqttwarn/issues/events{/number}","events_url":"https://api.github.com/repos/hiveeyes/mqttwarn/events","assignees_url":"https://api.github.com/repos/hiveeyes/mqttwarn/assignees{/user}","branches_url":"https://api.github.com/repos/hiveeyes/mqttwarn/branches{/branch}","tags_url":"https://api.github.com/repos/hiveeyes/mqttwarn/tags","blobs_url":"https://api.github.com/repos/hiveeyes/mqttwarn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hiveeyes/mqttwarn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hiveeyes/mqttwarn/git/refs{/sha}","trees_url":"https://api.github.com/repos/hiveeyes/mqttwarn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hiveeyes/mqttwarn/statuses/{sha}","languages_url":"https://api.github.com/repos/hiveeyes/mqttwarn/languages","stargazers_url":"https://api.github.com/repos/hiveeyes/mqttwarn/stargazers","contributors_url":"https://api.github.com/repos/hiveeyes/mqttwarn/contributors","subscribers_url":"https://api.github.com/repos/hiveeyes/mqttwarn/subscribers","subscription_url":"https://api.github.com/repos/hiveeyes/mqttwarn/subscription","commits_url":"https://api.github.com/repos/hiveeyes/mqttwarn/commits{/sha}","git_commits_url":"https://api.github.com/repos/hiveeyes/mqttwarn/git/commits{/sha}","comments_url":"https://api.github.com/repos/hiveeyes/mqttwarn/comments{/number}","issue_comment_url":"https://api.github.com/repos/hiveeyes/mqttwarn/issues/comments{/number}","contents_url":"https://api.github.com/repos/hiveeyes/mqttwarn/contents/{+path}","compare_url":"https://api.github.com/repos/hiveeyes/mqttwarn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hiveeyes/mqttwarn/merges","archive_url":"https://api.github.com/repos/hiveeyes/mqttwarn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hiveeyes/mqttwarn/downloads","issues_url":"https://api.github.com/repos/hiveeyes/mqttwarn/issues{/number}","pulls_url":"https://api.github.com/repos/hiveeyes/mqttwarn/pulls{/number}","milestones_url":"https://api.github.com/repos/hiveeyes/mqttwarn/milestones{/number}","notifications_url":"https://api.github.com/repos/hiveeyes/mqttwarn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hiveeyes/mqttwarn/labels{/name}","releases_url":"https://api.github.com/repos/hiveeyes/mqttwarn/releases{/id}","deployments_url":"https://api.github.com/repos/hiveeyes/mqttwarn/deployments","created_at":"2016-02-12T22:59:40Z","updated_at":"2016-02-12T22:59:40Z","pushed_at":"2016-05-30T14:18:36Z","git_url":"git://github.com/hiveeyes/mqttwarn.git","ssh_url":"git@github.com:hiveeyes/mqttwarn.git","clone_url":"https://github.com/hiveeyes/mqttwarn.git","svn_url":"https://github.com/hiveeyes/mqttwarn","homepage":"http://jpmens.net/2014/02/17/introducing-mqttwarn-a-pluggable-mqtt-notifier/","size":1491,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"jpmens:master","ref":"master","sha":"93f4f1f931e0f24a16cc35223955ab9a324db23d","user":{"login":"jpmens","id":60706,"avatar_url":"https://avatars.githubusercontent.com/u/60706?v=3","gravatar_id":"","url":"https://api.github.com/users/jpmens","html_url":"https://github.com/jpmens","followers_url":"https://api.github.com/users/jpmens/followers","following_url":"https://api.github.com/users/jpmens/following{/other_user}","gists_url":"https://api.github.com/users/jpmens/gists{/gist_id}","starred_url":"https://api.github.com/users/jpmens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpmens/subscriptions","organizations_url":"https://api.github.com/users/jpmens/orgs","repos_url":"https://api.github.com/users/jpmens/repos","events_url":"https://api.github.com/users/jpmens/events{/privacy}","received_events_url":"https://api.github.com/users/jpmens/received_events","type":"User","site_admin":false},"repo":{"id":16667903,"name":"mqttwarn","full_name":"jpmens/mqttwarn","owner":{"login":"jpmens","id":60706,"avatar_url":"https://avatars.githubusercontent.com/u/60706?v=3","gravatar_id":"","url":"https://api.github.com/users/jpmens","html_url":"https://github.com/jpmens","followers_url":"https://api.github.com/users/jpmens/followers","following_url":"https://api.github.com/users/jpmens/following{/other_user}","gists_url":"https://api.github.com/users/jpmens/gists{/gist_id}","starred_url":"https://api.github.com/users/jpmens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpmens/subscriptions","organizations_url":"https://api.github.com/users/jpmens/orgs","repos_url":"https://api.github.com/users/jpmens/repos","events_url":"https://api.github.com/users/jpmens/events{/privacy}","received_events_url":"https://api.github.com/users/jpmens/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jpmens/mqttwarn","description":"Subscribe to MQTT topics (with wildcards) and notifiy pluggable services","fork":false,"url":"https://api.github.com/repos/jpmens/mqttwarn","forks_url":"https://api.github.com/repos/jpmens/mqttwarn/forks","keys_url":"https://api.github.com/repos/jpmens/mqttwarn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jpmens/mqttwarn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jpmens/mqttwarn/teams","hooks_url":"https://api.github.com/repos/jpmens/mqttwarn/hooks","issue_events_url":"https://api.github.com/repos/jpmens/mqttwarn/issues/events{/number}","events_url":"https://api.github.com/repos/jpmens/mqttwarn/events","assignees_url":"https://api.github.com/repos/jpmens/mqttwarn/assignees{/user}","branches_url":"https://api.github.com/repos/jpmens/mqttwarn/branches{/branch}","tags_url":"https://api.github.com/repos/jpmens/mqttwarn/tags","blobs_url":"https://api.github.com/repos/jpmens/mqttwarn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jpmens/mqttwarn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jpmens/mqttwarn/git/refs{/sha}","trees_url":"https://api.github.com/repos/jpmens/mqttwarn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jpmens/mqttwarn/statuses/{sha}","languages_url":"https://api.github.com/repos/jpmens/mqttwarn/languages","stargazers_url":"https://api.github.com/repos/jpmens/mqttwarn/stargazers","contributors_url":"https://api.github.com/repos/jpmens/mqttwarn/contributors","subscribers_url":"https://api.github.com/repos/jpmens/mqttwarn/subscribers","subscription_url":"https://api.github.com/repos/jpmens/mqttwarn/subscription","commits_url":"https://api.github.com/repos/jpmens/mqttwarn/commits{/sha}","git_commits_url":"https://api.github.com/repos/jpmens/mqttwarn/git/commits{/sha}","comments_url":"https://api.github.com/repos/jpmens/mqttwarn/comments{/number}","issue_comment_url":"https://api.github.com/repos/jpmens/mqttwarn/issues/comments{/number}","contents_url":"https://api.github.com/repos/jpmens/mqttwarn/contents/{+path}","compare_url":"https://api.github.com/repos/jpmens/mqttwarn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jpmens/mqttwarn/merges","archive_url":"https://api.github.com/repos/jpmens/mqttwarn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jpmens/mqttwarn/downloads","issues_url":"https://api.github.com/repos/jpmens/mqttwarn/issues{/number}","pulls_url":"https://api.github.com/repos/jpmens/mqttwarn/pulls{/number}","milestones_url":"https://api.github.com/repos/jpmens/mqttwarn/milestones{/number}","notifications_url":"https://api.github.com/repos/jpmens/mqttwarn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jpmens/mqttwarn/labels{/name}","releases_url":"https://api.github.com/repos/jpmens/mqttwarn/releases{/id}","deployments_url":"https://api.github.com/repos/jpmens/mqttwarn/deployments","created_at":"2014-02-09T14:32:08Z","updated_at":"2016-05-27T18:25:25Z","pushed_at":"2016-05-31T06:32:06Z","git_url":"git://github.com/jpmens/mqttwarn.git","ssh_url":"git@github.com:jpmens/mqttwarn.git","clone_url":"https://github.com/jpmens/mqttwarn.git","svn_url":"https://github.com/jpmens/mqttwarn","homepage":"http://jpmens.net/2014/02/17/introducing-mqttwarn-a-pluggable-mqtt-notifier/","size":1668,"stargazers_count":400,"watchers_count":400,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":87,"mirror_url":null,"open_issues_count":20,"forks":87,"open_issues":20,"watchers":400,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/jpmens/mqttwarn/pulls/192"},"html":{"href":"https://github.com/jpmens/mqttwarn/pull/192"},"issue":{"href":"https://api.github.com/repos/jpmens/mqttwarn/issues/192"},"comments":{"href":"https://api.github.com/repos/jpmens/mqttwarn/issues/192/comments"},"review_comments":{"href":"https://api.github.com/repos/jpmens/mqttwarn/pulls/192/comments"},"review_comment":{"href":"https://api.github.com/repos/jpmens/mqttwarn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/jpmens/mqttwarn/pulls/192/commits"},"statuses":{"href":"https://api.github.com/repos/jpmens/mqttwarn/statuses/1069b3c533dbe9806fc88374a9b8ddfa5f2ac848"}}}}
{"actor":{"display_login":"amotl"}}