Atomic operations on several transactionless external systems
Posted
by simendsjo
on Stack Overflow
See other posts from Stack Overflow
or by simendsjo
Published on 2010-06-10T07:52:05Z
Indexed on
2010/06/13
17:32 UTC
Read the original article
Hit count: 251
Say you have an application connecting 3 different external systems. You need to update something in all 3. In case of a failure, you need to roll back the operations. This is not a hard thing to implement, but say operation 3 fails, and when rolling back, the rollback for operation 1 fails! Now the first external system is in an invalid state...
I'm thinking a possible solution is to shut down the application and forcing a manual fix of the external system, but then again... It might already have used this information (and perhaps that's why it failed), or we might not have sufficient access. Or it might not even be a good way to rollback the action!
Are there some good ways of handling such cases?
EDIT: Some application details..
It's a multi user web application. Most of the work is done with scheduled jobs (through Quartz.Net), so most operations is run in it's own thread. Some user actions should trigger jobs that update several systems though. The external systems are somewhat unstable.
I Was thinking of changing the application to use the Command and Unit Of Work pattern
© Stack Overflow or respective owner