Avoid Lock - Pointing Two WebJobs to The Same Azure Storage Account

Valdis Iljuconoks
Valdis Iljuconoks 2021-11-22 14:12:19

azure.jpg

Yes yes, while the whole world around us is serverless (read "servers running on thin air"), we are still running on concrete servers and utilizing real CPUs.

Recently we had a requirement to run multiple copies of our webjobs in parallel (with different settings and configuration) doing similar but different work. Webjobs runtime uses Singleton lock approach to coordinate the execution of the job across the farm (if you have scaled-out your application). This is the way how runtime avoids duplicate executions of the same job. Webjobs runtime uses Azure storage blobs to accomplish a locking mechanism across multiple nodes in your cluster.

We wanted to skip extra storage account creation for the copy of the webjobs, but instead - we would like to use the same account because webjobs are doing completely different tasks and it's OK if they run simultaneously. But when you point both copies of the job to the same storage account one of the jobs will not be able to acquire the lock and therefore will stall until another job will release the lock.

We had to handle this somehow and workaround "single host" limitation.

Read more in my blog post: Avoid Lock - Pointing Two WebJobs to The Same Azure Storage Account