This document mentions about configuring transitions in a truthy value. I am not sure when was it changed to be truthy value, but in our older sms configurations, we were using transitions to be set like this:
"transitions": {
"accept_patient_reports": {
"load": "./transitions/accept_patient_reports.js"
},
"conditional_alerts": {
"load": "./transitions/conditional_alerts.js"
},
"default_responses": {
"load": "./transitions/default_responses.js"
},
"update_sent_by": {
"load": "./transitions/update_sent_by.js"
},
"registration": {
"load": "./transitions/registration.js"
},
"update_clinics": {
"load": "./transitions/update_clinics.js"
},
"update_notifications": {
"load": "./transitions/update_notifications.js"
},
"update_scheduled_reports": {
"load": "./transitions/update_scheduled_reports.js"
},
"update_sent_forms": {
"load": "./transitions/update_sent_forms.js"
}
}
Which appears to be referencing the transtion files here.
Most of our instances were on CHT 2.x and 3.6/7/8 and all had transitions like shown above.
Recently, we upgraded our CHT instances to up to 3.16 and as per documentation, we updated transitions to be on truthy value. However, we’re getting unseen errors because of this on different transitions. Until recently, we were seeing problem only on update_notifications
and we replaced truthy value to look like how we used previously:
"update_notifications": {
"load": "./transitions/update_notifications.js"
},
Now, in some instances running on 3.16, we’re also seeing an issue with registration
transition. Below is the log:
2023-01-29 20:50:57 ERROR: UNHANDLED REJECTION!
2023-01-29 20:50:57 ERROR: Reason: TypeError: Cannot read properties of undefined (reading 'registrations')
at Object.get (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/config.js:10:21)
at getConfig (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/transitions/registration.js:188:32)
at Object.filter (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/transitions/registration.js:671:29)
at canRun (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/transitions/index.js:221:16)
at applyTransition (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/transitions/index.js:271:18)
at wrapper (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/lodash/lodash.js:5213:19)
at /Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/async/dist/async.js:3669:28
at replenish (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/async/dist/async.js:446:21)
at iterateeCallback (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/async/dist/async.js:430:21)
at /Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/async/dist/async.js:327:20 {
[stack]: "TypeError: Cannot read properties of undefined (reading 'registrations')\n" +
' at Object.get (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/config.js:10:21)\n' +
' at getConfig (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/transitions/registration.js:188:32)\n' +
' at Object.filter (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/transitions/registration.js:671:29)\n' +
' at canRun (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/transitions/index.js:221:16)\n' +
' at applyTransition (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/@medic/transitions/src/transitions/index.js:271:18)\n' +
' at wrapper (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/lodash/lodash.js:5213:19)\n' +
' at /Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/async/dist/async.js:3669:28\n' +
' at replenish (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/async/dist/async.js:446:21)\n' +
' at iterateeCallback (/Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/async/dist/async.js:430:21)\n' +
' at /Users/yuvraj/.horticulturalist/deployments/medic-api/md5-IaUJW7p4rpaMwbWhKl5C1A==/node_modules/async/dist/async.js:327:20',
[message]: "Cannot read properties of undefined (reading 'registrations')"
}
We are updating registration transition to follow the older pattern of loading file and it’s working so far now.
Why setting truthy value for transitions is failing? What’s the difference in setting it to truthy
value vs loading the transition file?