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.
If you want to implement distributed transactions you need something like 2-phase commit, without blocking the DO itself (don't abuse use of
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
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.