General guideline when you post, don't tag individuals please. What you describe is the definition

General guideline when you post, don't tag individuals please.

What you describe is the definition deadlock, so it makes sense that it deadblocks. blockConcurrencyWhile is like a lock, nothing can get into your DO while that runs.

If you want to implement distributed transactions you need something like 2-phase commit, without blocking the DO itself (don't abuse use of blockConcurrencyWhile). Store something in your state/storage that you are doing a transaction and reject anything if that's true.

I am working on a different transaction approach, for a personal project, but it's not ready for public yet, maybe in the future that could help you as well. But for now, distributed transactions need the standard 2-phase approach (or other techniques used by traditional systems).

In general, I don't like blockConcurrencyWhile personally and try to avoid it.
Was this page helpful?