Google is going to discontinue some of its legacy Firebase Cloud Messaging (FCM) APIs and some of them are being used by our notification service.
We do not invoke the APIs directly. These APIs are REST APIs where clients have to make HTTP requests directly to the FCM server endpoints. Instead, we interact with FCM servers via the Firebase Admin SDK, which provides a programming interface over the REST API.
To migrate from the old APIs being discontinued, we need to upgrade the Firebase Admin SDK to version 9.2.0, and replace our deprecated API call with the new APIs. (Firebase Admin Java SDK Release Notes ). Specifically we may have to replace our sendMulticastAsync with the new sendEachForMulticastAysnc API. The new API does not allow more than 500 devices to send in one invocation.
This PR upgrades the firebase to version 9.2.0
How to test
The change was verified on CODE where we was able to send notifications successfully.
However, we cannot verify its performance on CODE. The changes were in the API call which does the actual operation of sending notifications to real devices. To check the performance impact, we can only run it as an experiment on PROD which has more than 1 million subscribed users.
How can we measure success?
We expect the performance to be comparable to that before the upgrade.
Have we considered potential risks?
The new API may have negative impact on the performance.
All deployment options
- [Deploy build 4277 of `mobile-n10n:registration` to CODE](https://riffraff.gutools.co.uk/deployment/deployAgain?project=mobile-n10n%3Aregistration&build=4277&stage=CODE&updateStrategy=MostlyHarmless&action=deploy)
- [Deploy parts of build 4277 to CODE by previewing it first](https://riffraff.gutools.co.uk/preview/yaml?project=mobile-n10n%3Aregistration&build=4277&stage=CODE&updateStrategy=MostlyHarmless)
- [What's on CODE right now?](https://riffraff.gutools.co.uk/deployment/history?projectName=mobile-n10n%3Aregistration&stage=CODE)
All deployment options
- [Deploy build 4309 of `mobile-n10n:notificationworkerlambda` to CODE](https://riffraff.gutools.co.uk/deployment/deployAgain?project=mobile-n10n%3Anotificationworkerlambda&build=4309&stage=CODE&updateStrategy=MostlyHarmless&action=deploy)
- [Deploy parts of build 4309 to CODE by previewing it first](https://riffraff.gutools.co.uk/preview/yaml?project=mobile-n10n%3Anotificationworkerlambda&build=4309&stage=CODE&updateStrategy=MostlyHarmless)
- [What's on CODE right now?](https://riffraff.gutools.co.uk/deployment/history?projectName=mobile-n10n%3Anotificationworkerlambda&stage=CODE)
What does this change?
Google is going to discontinue some of its legacy Firebase Cloud Messaging (FCM) APIs and some of them are being used by our notification service.
We do not invoke the APIs directly. These APIs are REST APIs where clients have to make HTTP requests directly to the FCM server endpoints. Instead, we interact with FCM servers via the Firebase Admin SDK, which provides a programming interface over the REST API.
To migrate from the old APIs being discontinued, we need to upgrade the Firebase Admin SDK to version 9.2.0, and replace our deprecated API call with the new APIs. (Firebase Admin Java SDK Release Notes ). Specifically we may have to replace our
sendMulticastAsync
with the newsendEachForMulticastAysnc
API. The new API does not allow more than 500 devices to send in one invocation.This PR upgrades the firebase to version 9.2.0
How to test
The change was verified on
CODE
where we was able to send notifications successfully.However, we cannot verify its performance on CODE. The changes were in the API call which does the actual operation of sending notifications to real devices. To check the performance impact, we can only run it as an experiment on PROD which has more than 1 million subscribed users.
How can we measure success?
We expect the performance to be comparable to that before the upgrade.
Have we considered potential risks?
The new API may have negative impact on the performance.