ChainedTransactionManager doesn't guarantee that both transactions will be rolled back in both cases, here is a quote from JavaDoc:
Using this implementation assumes that errors causing a transaction rollback will usually happen before the transaction completion or during the commit of the *most inner PlatformTransactionManager*. So behavior basically depends on the order transaction managers are provided. If you want to have a single transaction that spawns two data sources, you should use JTA. Ignite has integration with it: https://apacheignite.readme.io/docs/transactions#integration-with-jta -Val -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/