[
https://issues.jboss.org/browse/ISPN-4389?page=com.atlassian.jira.plugin....
]
William Burns commented on ISPN-4389:
-------------------------------------
Okay I think I understand this better. In a distributed cache when rebalance is disabled
we don't need to retrieve values from remote nodes and thus we don't have to
participate in the consistent hash at all. However for replication we require to retrieve
all values from the current owners and be in the consistent hash.
So there are 2 issues here:
# REPL doesn't request the segments initially like it should always, since it is no
part of the CH. See StateConsumerImpl.getOwnedSegments. I think this should be fixed by
adding the cache to the CH no matter what in ClusterTopologyManagerImpl.handleJoin for
REPL.
# The latter is that waitForInitialStateTransfer doesn't work when Rehash is disabled.
This is because the owner doesn't add the new node to the CH until rebalance occurs,
since it isn't needed as a writer or reader.
## If the point about REPL is fixed above, this is also fixed for it.
## For DIST the current check in StateTransferManagerImpl to only allow the initial
transfer to complete if it is part of the CH will break if rebalance is disabled but
waitForInitialStateTransfer is set to true. We should probably log a warning, to make
sure the user is aware of this, since they could reenable state transfer in time maybe?
Further we should also add a configuration check (probably a warning) to ensure that
waitforInitialStateTransfer is never false for a REPL cache. If this is set to false it
would cause data inconsistency until the data is transferred completely.
Tests for suppressing state transfer with jmx fail
--------------------------------------------------
Key: ISPN-4389
URL:
https://issues.jboss.org/browse/ISPN-4389
Project: Infinispan
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Server, State Transfer
Reporter: William Burns
Assignee: William Burns
Fix For: 7.0.0.Alpha5
Attachments: server-full-trace.tar.gz
http://ci.infinispan.org/viewLog.html?buildId=8736&buildTypeId=bt8&am...
{code}
12:00:43,839 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001:
Failed to start service jboss.infinispan.clustered.default:
org.jboss.msc.service.StartException in service jboss.infinispan.clustered.default: Failed
to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767)
[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
[rt.jar:1.7.0_06]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
[rt.jar:1.7.0_06]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_06]
Caused by: org.infinispan.commons.CacheException: Unable to invoke method public void
org.infinispan.statetransfer.StateTransferManagerImpl.waitForInitialStateTransferToComplete()
throws java.lang.InterruptedException on object of type StateTransferManagerImpl
at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:170)
at
org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:869)
at
org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:638)
at
org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:627)
at
org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:530)
at org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:216)
at org.infinispan.CacheImpl.start(CacheImpl.java:696)
at
org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:574)
at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:529)
at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:409)
at
org.infinispan.registry.ClusterRegistryImpl.startRegistryCache(ClusterRegistryImpl.java:136)
at org.infinispan.registry.ClusterRegistryImpl.addListener(ClusterRegistryImpl.java:97)
at
org.infinispan.query.remote.ProtobufMetadataManager.ensureInit(ProtobufMetadataManager.java:65)
at
org.infinispan.query.remote.ProtobufMetadataManager.getSerializationContext(ProtobufMetadataManager.java:132)
at
org.infinispan.query.remote.LifecycleManager.cacheStarting(LifecycleManager.java:114)
at
org.infinispan.factories.ComponentRegistry.notifyCacheStarting(ComponentRegistry.java:228)
at org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:214)
at org.infinispan.CacheImpl.start(CacheImpl.java:696)
at
org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:574)
at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:529)
at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:409)
at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:423)
at
org.jboss.as.clustering.infinispan.DefaultEmbeddedCacheManager.getCache(DefaultEmbeddedCacheManager.java:89)
at
org.jboss.as.clustering.infinispan.DefaultEmbeddedCacheManager.getCache(DefaultEmbeddedCacheManager.java:80)
at
org.jboss.as.clustering.infinispan.subsystem.SecurityActions$5.run(SecurityActions.java:101)
at
org.jboss.as.clustering.infinispan.subsystem.SecurityActions$5.run(SecurityActions.java:98)
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_06]
at
org.jboss.as.clustering.infinispan.subsystem.SecurityActions.startCache(SecurityActions.java:109)
at
org.jboss.as.clustering.infinispan.subsystem.CacheService.start(CacheService.java:78)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
... 3 more
Caused by: org.infinispan.commons.CacheException: Initial state transfer timed out for
cache __cluster_registry_cache__ on node2/clustered
at
org.infinispan.statetransfer.StateTransferManagerImpl.waitForInitialStateTransferToComplete(StateTransferManagerImpl.java:209)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_06]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_06]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_06]
at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_06]
at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:168)
... 33 more
{code}
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)