Improve observability on FCM errors (#542)
A caller can now observe errors returned from FCM server such as an unauthorized error (401).
This commit is contained in:
parent
eb400aa1d3
commit
5f88e5da5d
|
@ -141,6 +141,34 @@ Retry:
|
|||
if err != nil {
|
||||
// Send Message error
|
||||
LogError.Error("FCM server send message error: " + err.Error())
|
||||
|
||||
if req.IsTopic() {
|
||||
if PushConf.Core.Sync {
|
||||
req.AddLog(getLogPushEntry(FailedPush, req.To, req, err))
|
||||
} else if PushConf.Core.FeedbackURL != "" {
|
||||
go func(logger *logrus.Logger, log LogPushEntry, url string, timeout int64) {
|
||||
err := DispatchFeedback(log, url, timeout)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
}(LogError, getLogPushEntry(FailedPush, req.To, req, err), PushConf.Core.FeedbackURL, PushConf.Core.FeedbackTimeout)
|
||||
}
|
||||
StatStorage.AddAndroidError(1)
|
||||
} else {
|
||||
for _, token := range req.Tokens {
|
||||
if PushConf.Core.Sync {
|
||||
req.AddLog(getLogPushEntry(FailedPush, token, req, err))
|
||||
} else if PushConf.Core.FeedbackURL != "" {
|
||||
go func(logger *logrus.Logger, log LogPushEntry, url string, timeout int64) {
|
||||
err := DispatchFeedback(log, url, timeout)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
}(LogError, getLogPushEntry(FailedPush, token, req, err), PushConf.Core.FeedbackURL, PushConf.Core.FeedbackTimeout)
|
||||
}
|
||||
}
|
||||
StatStorage.AddAndroidError(int64(len(req.Tokens)))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -102,6 +102,7 @@ func TestPushToAndroidRightTokenForStringLog(t *testing.T) {
|
|||
func TestOverwriteAndroidAPIKey(t *testing.T) {
|
||||
PushConf, _ = config.LoadConf("")
|
||||
|
||||
PushConf.Core.Sync = true
|
||||
PushConf.Android.Enabled = true
|
||||
PushConf.Android.APIKey = os.Getenv("ANDROID_API_KEY")
|
||||
|
||||
|
@ -113,10 +114,14 @@ func TestOverwriteAndroidAPIKey(t *testing.T) {
|
|||
Message: "Welcome",
|
||||
// overwrite android api key
|
||||
APIKey: "1234",
|
||||
|
||||
log: &[]LogPushEntry{},
|
||||
}
|
||||
|
||||
// FCM server error: 401 error: 401 Unauthorized (Wrong API Key)
|
||||
PushToAndroid(req)
|
||||
|
||||
assert.Len(t, *req.log, 2)
|
||||
}
|
||||
|
||||
func TestFCMMessage(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue