CDV ❯ RMI replication does not support transactional caches
-
Bug
-
Status: Closed
-
2 Major
-
Resolution: Fixed
-
-
-
lorban
-
Reporter: lorban
-
February 18, 2011
-
0
-
Watchers: 0
-
July 27, 2012
-
February 18, 2011
Description
This config:
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
multicastGroupPort=4446, timeToLive=32"/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="port=40001,
socketTimeoutMillis=20000"/>
<cache name="fooCache"
maxElementsInMemory="100000"
eternal="true"
overflowToDisk="true"
diskPersistent="false"
transactionalMode="local"
copyOnRead="true"
copyOnWrite="true">
<copyStrategy class="net.sf.ehcache.store.compound.ImmutableValueElementCopyStrategy"/>
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true,
replicateUpdates=true, replicateUpdatesViaCopy=true, replicateRemovals=true" />
</cache>
ends up throwing this exception:
WARNING: Unable to send message to remote peer. Message was: transaction not started
net.sf.ehcache.transaction.TransactionException: transaction not started
at net.sf.ehcache.transaction.local.LocalTransactionStore.getCurrentTransactionContext(LocalTransactionStore.java:89)
at net.sf.ehcache.transaction.local.LocalTransactionStore.assertNotTimedOut(LocalTransactionStore.java:95)
at net.sf.ehcache.transaction.local.LocalTransactionStore.put(LocalTransactionStore.java:155)
at net.sf.ehcache.Cache.putInternal(Cache.java:1401)
at net.sf.ehcache.Cache.put(Cache.java:1334)
at net.sf.ehcache.distribution.RMICachePeer.put(RMICachePeer.java:178)
at net.sf.ehcache.distribution.RMICachePeer.send(RMICachePeer.java:221)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at net.sf.ehcache.distribution.RMICachePeer_Stub.send(Unknown Source)
at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.flushReplicationQueue(RMIAsynchronousCacheReplicator.java:317)
at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.replicationThreadMain(RMIAsynchronousCacheReplicator.java:119)
at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.access$100(RMIAsynchronousCacheReplicator.java:56)
at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator$ReplicationThread.run(RMIAsynchronousCacheReplicator.java:376)
See: http://forums.terracotta.org/forums/posts/list/4999.page
Comments
Ludovic Orban 2011-02-18
Fiona OShea 2011-02-18
thanks please merge to 2.4.x
Ludovic Orban 2011-02-18
Backported to 2.4.x branch under rev. 3665.
Fixed in trunk, rev. 3662.