An Azure service that provides an event-driven serverless compute platform.
Phillip hi , thx for sharing urs issue here at Q&A portal,
the function is getting stuck on the async/storage side, not hitting a hard memory or duration limit.
Doing 50k table merges one-by-one is a lot of round trips. After ~10k ops, u may be running into slow retries, socket exhaustion, throttling, or the Node event loop getting backed up. App Insights can also go quiet if the worker is still alive but stuck waiting on pending I/O. The fact that 10 parallel merges works is a good clue. It means the storage account/table can handle the load, but the fully sequential pattern is prob too slow or getting trapped in retries somewhere.
Since u have unique partition keys, normal transactional batch won’t help, yeah. https://learn.microsoft.com/en-us/rest/api/storageservices/performing-entity-group-transactions
Best fix is what u already tested process in small chunks with controlled concurrency, like 10-50 at a time, plus retry/backoff for 429, 503, and timeouts. Don’t fire all 50k at once tho, that just moves the fire from the kitchen to the garage.
Worth logging every 500 or 1000 rows with the current row number and catching/logging each failed merge. I’d also log SDK retry attempts if possible, because my guess is the function isn’t deadlocked, it’s sitting inside storage SDK retries or waiting on network I/O.
For longer imports, Durable Functions or a queue-based fan-out is cleaner. Put rows/chunks onto a queue and let multiple function executions process them. https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview So yeah, batching is not just a workaround here. For 50k remote table writes, controlled concurrency is basically the right design.
rgds,
Alex
&
If my answer was helpful pls mark it and additional thx if u follow me at Q&A portal