Ehcache has configurable correctness and coherency settings. A good, though not complete analogy is database isolation settings.

So, within an Ehcache cache clustered with Terracotta, you have:

Incoherent – No isolation control. Dirty Reads and Dirty Writes.
Coherent writes and incoherent reads  - Read Uncommitted
Coherent - Read Committed
Coherent with transactional rollback (JTA) – Read Committed with Two Phase Commit.
What about replicated cache clusters using RMI, JGroups or JMS? These have no isolation control. Read and Writes are dirty. Writes to the same key made in different JVMs in the cluster will race each other to propagate across the cluster. Differences between JVMs are highly likely. When using this style of cluster you must program accordingly.