diff --git a/synapse/push/httppusher.py b/synapse/push/httppusher.py
index 6bd703632d..e65f8c63d3 100644
--- a/synapse/push/httppusher.py
+++ b/synapse/push/httppusher.py
@@ -32,9 +32,25 @@ if six.PY3:
logger = logging.getLogger(__name__)
-http_push_processed_counter = Counter("synapse_http_httppusher_http_pushes_processed", "")
+http_push_processed_counter = Counter(
+ "synapse_http_httppusher_http_pushes_processed",
+ "Number of push notifications successfully sent",
+)
-http_push_failed_counter = Counter("synapse_http_httppusher_http_pushes_failed", "")
+http_push_failed_counter = Counter(
+ "synapse_http_httppusher_http_pushes_failed",
+ "Number of push notifications which failed",
+)
+
+http_badges_processed_counter = Counter(
+ "synapse_http_httppusher_badge_updates_processed",
+ "Number of badge updates successfully sent",
+)
+
+http_badges_failed_counter = Counter(
+ "synapse_http_httppusher_badge_updates_failed",
+ "Number of badge updates which failed",
+)
class HttpPusher(object):
@@ -81,6 +97,11 @@ class HttpPusher(object):
pusherdict['pushkey'],
)
+ if self.data is None:
+ raise PusherConfigException(
+ "data can not be null for HTTP pusher"
+ )
+
if 'url' not in self.data:
raise PusherConfigException(
"'url' required in data for HTTP pusher"
@@ -311,10 +332,10 @@ class HttpPusher(object):
]
}
}
- if event.type == 'm.room.member':
+ if event.type == 'm.room.member' and event.is_state():
d['notification']['membership'] = event.content['membership']
d['notification']['user_is_target'] = event.state_key == self.user_id
- if self.hs.config.push_include_content and 'content' in event:
+ if self.hs.config.push_include_content and event.content:
d['notification']['content'] = event.content
# We no longer send aliases separately, instead, we send the human
@@ -333,10 +354,10 @@ class HttpPusher(object):
defer.returnValue([])
try:
resp = yield self.http_client.post_json_get_json(self.url, notification_dict)
- except Exception:
- logger.warn(
- "Failed to push event %s to %s",
- event.event_id, self.name, exc_info=True,
+ except Exception as e:
+ logger.warning(
+ "Failed to push event %s to %s: %s %s",
+ event.event_id, self.name, type(e), e,
)
defer.returnValue(False)
rejected = []
@@ -346,6 +367,10 @@ class HttpPusher(object):
@defer.inlineCallbacks
def _send_badge(self, badge):
+ """
+ Args:
+ badge (int): number of unread messages
+ """
logger.info("Sending updated badge count %d to %s", badge, self.name)
d = {
'notification': {
@@ -366,14 +391,11 @@ class HttpPusher(object):
}
}
try:
- resp = yield self.http_client.post_json_get_json(self.url, d)
- except Exception:
- logger.warn(
- "Failed to send badge count to %s",
- self.name, exc_info=True,
+ yield self.http_client.post_json_get_json(self.url, d)
+ http_badges_processed_counter.inc()
+ except Exception as e:
+ logger.warning(
+ "Failed to send badge count to %s: %s %s",
+ self.name, type(e), e,
)
- defer.returnValue(False)
- rejected = []
- if 'rejected' in resp:
- rejected = resp['rejected']
- defer.returnValue(rejected)
+ http_badges_failed_counter.inc()
|