mirror of https://github.com/apache/cassandra
Fix restarting a node when other nodes are down in dtests
patch by Jacek Lewandowski; reviewed by Michael Semb Wever for CASSANDRA-17214
This commit is contained in:
parent
ecfe7e809b
commit
d543dae2cd
|
|
@ -538,7 +538,7 @@
|
|||
<dependency groupId="com.google.code.java-allocation-instrumenter" artifactId="java-allocation-instrumenter" version="${allocation-instrumenter.version}" scope="test">
|
||||
<exclusion groupId="com.google.guava" artifactId="guava"/>
|
||||
</dependency>
|
||||
<dependency groupId="org.apache.cassandra" artifactId="dtest-api" version="0.0.11" scope="test"/>
|
||||
<dependency groupId="org.apache.cassandra" artifactId="dtest-api" version="0.0.12" scope="test"/>
|
||||
<dependency groupId="org.reflections" artifactId="reflections" version="0.9.12" scope="test"/>
|
||||
<dependency groupId="com.puppycrawl.tools" artifactId="checkstyle" version="8.40" scope="test"/>
|
||||
<dependency groupId="org.apache.hadoop" artifactId="hadoop-core" version="1.0.3" scope="provided">
|
||||
|
|
|
|||
|
|
@ -281,6 +281,12 @@ public abstract class AbstractCluster<I extends IInstance> implements ICluster<I
|
|||
return !isShutdown;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid()
|
||||
{
|
||||
return delegate != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void startup()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import java.util.concurrent.ExecutorService;
|
|||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import java.util.stream.Stream;
|
||||
import javax.management.ListenerNotFoundException;
|
||||
import javax.management.Notification;
|
||||
import javax.management.NotificationListener;
|
||||
|
|
@ -632,12 +633,13 @@ public class Instance extends IsolatedExecutor implements IInvokableInstance
|
|||
}
|
||||
else
|
||||
{
|
||||
Stream peers = cluster.stream().filter(instance -> ((IInstance) instance).isValid());
|
||||
if (config.has(BLANK_GOSSIP))
|
||||
cluster.stream().forEach(peer -> GossipHelper.statusToBlank((IInvokableInstance) peer).accept(this));
|
||||
peers.forEach(peer -> GossipHelper.statusToBlank((IInvokableInstance) peer).accept(this));
|
||||
else if (cluster instanceof Cluster)
|
||||
cluster.stream().forEach(peer -> GossipHelper.statusToNormal((IInvokableInstance) peer).accept(this));
|
||||
peers.forEach(peer -> GossipHelper.statusToNormal((IInvokableInstance) peer).accept(this));
|
||||
else
|
||||
cluster.stream().forEach(peer -> GossipHelper.unsafeStatusToNormal(this, (IInstance) peer));
|
||||
peers.forEach(peer -> GossipHelper.unsafeStatusToNormal(this, (IInstance) peer));
|
||||
|
||||
StorageService.instance.setUpDistributedSystemKeyspaces();
|
||||
StorageService.instance.setNormalModeUnsafe();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.cassandra.distributed.test;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.apache.cassandra.distributed.Cluster;
|
||||
import org.apache.cassandra.utils.FBUtilities;
|
||||
|
||||
public class RestartTest extends TestBaseImpl
|
||||
{
|
||||
@Test
|
||||
public void test() throws Exception
|
||||
{
|
||||
try (Cluster cluster = init(Cluster.build(2).withDataDirCount(1).start()))
|
||||
{
|
||||
FBUtilities.waitOnFuture(cluster.get(2).shutdown());
|
||||
FBUtilities.waitOnFuture(cluster.get(1).shutdown());
|
||||
cluster.get(1).startup();
|
||||
cluster.get(2).startup();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue