[infinispan-issues] [JBoss JIRA] (ISPN-4389) Tests for suppressing state transfer with jmx fail
William Burns (JIRA)
issues at jboss.org
Fri Jun 13 11:35:39 EDT 2014
[ https://issues.jboss.org/browse/ISPN-4389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12976105#comment-12976105 ]
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&tab=buildResultsDiv#testNameId5089826253642936221
> {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)
More information about the infinispan-issues
mailing list