Exception should be thrown on cache creation attempt inside transaction to prevent deadlocks since cache start triggers exchange and exchange cannot finish until all txs are finished.
We need to check if thread owns a tx before starting cache and if it does then IllegalStateException should be thrown.