Yes. In general it is a nightmare to attempt to coordinate STM with any sort of external action because STM inherently needs to have the ability to do computations multiple times and have “wasted” work when sometimes a transaction cannot commit immediately. Coupling STM with IO can only be done very carefully, making sure for example that the IO is abortable and idempotent.
In our architecture (which is of course by no means perfect!) we largely use a single machine for the majority of our interactions so right now we aren’t facing this issue per se.
Comments
Yes. In general it is a nightmare to attempt to coordinate STM with any sort of external action because STM inherently needs to have the ability to do computations multiple times and have “wasted” work when sometimes a transaction cannot commit immediately. Coupling STM with IO can only be done very carefully, making sure for example that the IO is abortable and idempotent.
In our architecture (which is of course by no means perfect!) we largely use a single machine for the majority of our interactions so right now we aren’t facing this issue per se.