Updates
A sender service written in Go is now relying on a new version of FCM protocol and requires an update.
Since new protocol has its own requirements, we need to update related services that prepare data for the sender as well.
Risks
The main risk here is a compatibility with response delivery reports which are sent to the production amazon cluster.
We expect to have new error codes coming within response reports and we need to make sure that it will not break old ones.
It will probably require some changes on amazon side as well (e.g. directory-events-api)
An additional script might also come in handy to clean messages container from old data after directory messages update will be released.
from itertools import product
from apps.messages.models import FirebaseSpamMessages, FirebaseMessages
for spam, firebase_app in product([True, False], ['04a4177e-d2a0-4372-bd59-0a417597e5a3']):
print(f"Clearing messages container for {firebase_app} ({'spam' if spam else 'regular'})")
container = FirebaseSpamMessages(firebase_app=firebase_app) if spam else FirebaseMessages(firebase_app=firebase_app)
container.reset()
Update plan
- update directory events API (amazon) to support new error codes
- update subscribers errors service service to be able to react on new error codes
- update directory errors listener for new error code compability
- ensure that old error codes are still supported and being processed correctly
- ensure service is still unsubscribing users with old error codes
- release all dependencies on a bts 0:
- clean messages container data
- release update for a sender service service on bts 0
Update map
- directory-events-api [before: 1.56.10.1][after: 1.66.4.1] deployment
- go-sender [before: 1.9.4.0][after: 1.10.1.0] deployment
- directory-responses [before: 1.64.2.1][after: 1.66.4.1] deployment
- events-proxy [before: 1.12.5.0][after: 1.13.7.0] deployment
- directory-messages [before: 1.64.2.1][after: 1.66.4.1] deployment
- subscribers-errors [before: 1.65.14.1][after: 1.66.4.1] deployment
- subscribers-postponed [before: 1.65.14.1][after: 1.66.4.1] deployment
- directory-errors-listener [before: 1.51.16.1][after: 1.66.4.1] deployment
deployment render all [[templates/items/deployment]] where page = @page.name