Search in sources :

Example 1 with MasterNotDiscoveredException

use of org.opensearch.discovery.MasterNotDiscoveredException in project OpenSearch by opensearch-project.

the class SpecificMasterNodesIT method testSimpleOnlyMasterNodeElection.

public void testSimpleOnlyMasterNodeElection() throws IOException {
    internalCluster().setBootstrapMasterNodeIndex(0);
    logger.info("--> start data node / non master node");
    internalCluster().startNode(Settings.builder().put(dataOnlyNode()).put("discovery.initial_state_timeout", "1s"));
    try {
        assertThat(client().admin().cluster().prepareState().setMasterNodeTimeout("100ms").execute().actionGet().getState().nodes().getMasterNodeId(), nullValue());
        fail("should not be able to find master");
    } catch (MasterNotDiscoveredException e) {
    // all is well, no master elected
    }
    logger.info("--> start master node");
    final String masterNodeName = internalCluster().startMasterOnlyNode();
    assertThat(internalCluster().nonMasterClient().admin().cluster().prepareState().execute().actionGet().getState().nodes().getMasterNode().getName(), equalTo(masterNodeName));
    assertThat(internalCluster().masterClient().admin().cluster().prepareState().execute().actionGet().getState().nodes().getMasterNode().getName(), equalTo(masterNodeName));
    logger.info("--> stop master node");
    Settings masterDataPathSettings = internalCluster().dataPathSettings(internalCluster().getMasterName());
    internalCluster().stopCurrentMasterNode();
    try {
        assertThat(client().admin().cluster().prepareState().setMasterNodeTimeout("100ms").execute().actionGet().getState().nodes().getMasterNodeId(), nullValue());
        fail("should not be able to find master");
    } catch (MasterNotDiscoveredException e) {
    // all is well, no master elected
    }
    logger.info("--> start previous master node again");
    final String nextMasterEligibleNodeName = internalCluster().startNode(Settings.builder().put(nonDataNode(masterNode())).put(masterDataPathSettings));
    assertThat(internalCluster().nonMasterClient().admin().cluster().prepareState().execute().actionGet().getState().nodes().getMasterNode().getName(), equalTo(nextMasterEligibleNodeName));
    assertThat(internalCluster().masterClient().admin().cluster().prepareState().execute().actionGet().getState().nodes().getMasterNode().getName(), equalTo(nextMasterEligibleNodeName));
}
Also used : MasterNotDiscoveredException(org.opensearch.discovery.MasterNotDiscoveredException) Settings(org.opensearch.common.settings.Settings)

Example 2 with MasterNotDiscoveredException

use of org.opensearch.discovery.MasterNotDiscoveredException in project OpenSearch by opensearch-project.

the class LocalAllocateDangledIndices method allocateDangled.

public void allocateDangled(Collection<IndexMetadata> indices, ActionListener<AllocateDangledResponse> listener) {
    ClusterState clusterState = clusterService.state();
    DiscoveryNode masterNode = clusterState.nodes().getMasterNode();
    if (masterNode == null) {
        listener.onFailure(new MasterNotDiscoveredException("no master to send allocate dangled request"));
        return;
    }
    AllocateDangledRequest request = new AllocateDangledRequest(clusterService.localNode(), indices.toArray(new IndexMetadata[indices.size()]));
    transportService.sendRequest(masterNode, ACTION_NAME, request, new ActionListenerResponseHandler<>(listener, AllocateDangledResponse::new, ThreadPool.Names.SAME));
}
Also used : ClusterState(org.opensearch.cluster.ClusterState) DiscoveryNode(org.opensearch.cluster.node.DiscoveryNode) MasterNotDiscoveredException(org.opensearch.discovery.MasterNotDiscoveredException) IndexMetadata(org.opensearch.cluster.metadata.IndexMetadata)

Example 3 with MasterNotDiscoveredException

use of org.opensearch.discovery.MasterNotDiscoveredException in project OpenSearch by opensearch-project.

the class TransportClusterStateActionDisruptionIT method testNonLocalRequestAlwaysFindsMasterAndWaitsForMetadata.

public void testNonLocalRequestAlwaysFindsMasterAndWaitsForMetadata() throws Exception {
    runRepeatedlyWhileChangingMaster(() -> {
        final String node = randomFrom(internalCluster().getNodeNames());
        final long metadataVersion = internalCluster().getInstance(ClusterService.class, node).getClusterApplierService().state().metadata().version();
        final long waitForMetadataVersion = randomLongBetween(Math.max(1, metadataVersion - 3), metadataVersion + 5);
        final ClusterStateRequestBuilder clusterStateRequestBuilder = client(node).admin().cluster().prepareState().clear().setNodes(true).setMetadata(true).setMasterNodeTimeout(TimeValue.timeValueMillis(100)).setWaitForTimeOut(TimeValue.timeValueMillis(100)).setWaitForMetadataVersion(waitForMetadataVersion);
        final ClusterStateResponse clusterStateResponse;
        try {
            clusterStateResponse = clusterStateRequestBuilder.get();
        } catch (MasterNotDiscoveredException e) {
            // ok, we hit the disconnected node
            return;
        }
        if (clusterStateResponse.isWaitForTimedOut() == false) {
            final ClusterState state = clusterStateResponse.getState();
            assertNotNull("should always contain a master node", state.nodes().getMasterNodeId());
            assertThat("waited for metadata version", state.metadata().version(), greaterThanOrEqualTo(waitForMetadataVersion));
        }
    });
}
Also used : ClusterState(org.opensearch.cluster.ClusterState) MasterNotDiscoveredException(org.opensearch.discovery.MasterNotDiscoveredException)

Aggregations

MasterNotDiscoveredException (org.opensearch.discovery.MasterNotDiscoveredException)3 ClusterState (org.opensearch.cluster.ClusterState)2 IndexMetadata (org.opensearch.cluster.metadata.IndexMetadata)1 DiscoveryNode (org.opensearch.cluster.node.DiscoveryNode)1 Settings (org.opensearch.common.settings.Settings)1