Search code examples
javascriptazure-functionsupgradeazure-functions-runtimedowntime

Update Azure Function Node.js Version, avoid downtime and lost messages


I have an Azure Function App hosted on an Elastic Premium service plan. It triggers from coming Service Bus messages.

I need to upgrade the Node.js version from 12 to 14 (configured in General settings) via Terraform. However, I am afraid of generating downtime and losing messages if the upgrade happens while messages are being processed.

For new messages, it should be fine as they won't be consumed and be read later on. But what if instances are busy running? Does Azure wait for them to complete before performing the upgrade (not creating new ones), or does it kill them even though they are not finished?

Can you please reassure me or guide me through this process. I am also looking for documentation that specifies the behavior in such scenario.

Thank you very much


Solution

  • Any update to the application setting which is node js version in this case will prompt a function restart.

    While in case of ongoing execution of the messages unless the execution is completely completed the function will not remove the messages and they will still be in the service bus, and they will only be removed once execution function is done.

    This is a peeklock behavior of the service bus where in event of the failure the message is not deleted also it is also a default behavior.

    refer the following documentation for further explanation on the peeklock behavior