diff --git a/docs/RFC.md b/docs/RFC.md index 4d65738c..23b69f22 100644 --- a/docs/RFC.md +++ b/docs/RFC.md @@ -58,7 +58,7 @@ The replication machinery is implemented as an OpenSearch plugin that exposes AP ### Details -The Start Replication API performs basic validations (such as existence checks on the remote cluster & index) and then spawns a persistent background task named `IndexReplicationTask` in the follower cluster to coordinate the replication process. This task does not replicate any data directly, but rather is responsible for initiating subtasks and monitoring the overall replication process. Hence, it can run on any node on the cluster (including master nodes) and we chose the node with the least number of tasks at the time. Each step in the workflow is checkpointed so that it can be resumed safely if interrupted. +The Start Replication API performs basic validations (such as existence checks on the remote cluster & index) and then spawns a persistent background task named `IndexReplicationTask` in the follower cluster to coordinate the replication process. This task does not replicate any data directly, but rather is responsible for initiating subtasks and monitoring the overall replication process. Hence, it can run on any node on the cluster (including Cluster manager nodes) and we chose the node with the least number of tasks at the time. Each step in the workflow is checkpointed so that it can be resumed safely if interrupted. ![Details](/docs/images/rfc1.png?raw=true "Details") diff --git a/src/main/kotlin/org/opensearch/replication/ReplicationPlugin.kt b/src/main/kotlin/org/opensearch/replication/ReplicationPlugin.kt index 86313e03..3fa602b0 100644 --- a/src/main/kotlin/org/opensearch/replication/ReplicationPlugin.kt +++ b/src/main/kotlin/org/opensearch/replication/ReplicationPlugin.kt @@ -11,16 +11,12 @@ package org.opensearch.replication -import org.opensearch.replication.action.autofollow.AutoFollowMasterNodeAction -import org.opensearch.replication.action.autofollow.TransportAutoFollowMasterNodeAction -import org.opensearch.replication.action.autofollow.TransportUpdateAutoFollowPatternAction -import org.opensearch.replication.action.autofollow.UpdateAutoFollowPatternAction import org.opensearch.replication.action.changes.GetChangesAction import org.opensearch.replication.action.changes.TransportGetChangesAction import org.opensearch.replication.action.index.ReplicateIndexAction -import org.opensearch.replication.action.index.ReplicateIndexMasterNodeAction +import org.opensearch.replication.action.index.ReplicateIndexClusterManagerNodeAction import org.opensearch.replication.action.index.TransportReplicateIndexAction -import org.opensearch.replication.action.index.TransportReplicateIndexMasterNodeAction +import org.opensearch.replication.action.index.TransportReplicateIndexClusterManagerNodeAction import org.opensearch.replication.action.index.block.TransportUpddateIndexBlockAction import org.opensearch.replication.action.index.block.UpdateIndexBlockAction import org.opensearch.replication.action.pause.PauseIndexReplicationAction @@ -120,6 +116,7 @@ import org.opensearch.plugins.EnginePlugin import org.opensearch.plugins.PersistentTaskPlugin import org.opensearch.plugins.Plugin import org.opensearch.plugins.RepositoryPlugin +import org.opensearch.replication.action.autofollow.* import org.opensearch.replication.action.stats.AutoFollowStatsAction import org.opensearch.replication.action.stats.FollowerStatsAction import org.opensearch.replication.action.stats.LeaderStatsAction @@ -218,12 +215,12 @@ internal class ReplicationPlugin : Plugin(), ActionPlugin, PersistentTaskPlugin, override fun getActions(): List> { return listOf(ActionHandler(GetChangesAction.INSTANCE, TransportGetChangesAction::class.java), ActionHandler(ReplicateIndexAction.INSTANCE, TransportReplicateIndexAction::class.java), - ActionHandler(ReplicateIndexMasterNodeAction.INSTANCE, TransportReplicateIndexMasterNodeAction::class.java), + ActionHandler(ReplicateIndexClusterManagerNodeAction.INSTANCE, TransportReplicateIndexClusterManagerNodeAction::class.java), ActionHandler(ReplayChangesAction.INSTANCE, TransportReplayChangesAction::class.java), ActionHandler(GetStoreMetadataAction.INSTANCE, TransportGetStoreMetadataAction::class.java), ActionHandler(GetFileChunkAction.INSTANCE, TransportGetFileChunkAction::class.java), ActionHandler(UpdateAutoFollowPatternAction.INSTANCE, TransportUpdateAutoFollowPatternAction::class.java), - ActionHandler(AutoFollowMasterNodeAction.INSTANCE, TransportAutoFollowMasterNodeAction::class.java), + ActionHandler(AutoFollowClusterManagerNodeAction.INSTANCE, TransportAutoFollowClusterManagerNodeAction::class.java), ActionHandler(StopIndexReplicationAction.INSTANCE, TransportStopIndexReplicationAction::class.java), ActionHandler(PauseIndexReplicationAction.INSTANCE, TransportPauseIndexReplicationAction::class.java), ActionHandler(ResumeIndexReplicationAction.INSTANCE, TransportResumeIndexReplicationAction::class.java), diff --git a/src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowMasterNodeAction.kt b/src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowClusterManagerNodeAction.kt similarity index 77% rename from src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowMasterNodeAction.kt rename to src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowClusterManagerNodeAction.kt index 181941ec..ccda3a15 100644 --- a/src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowMasterNodeAction.kt +++ b/src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowClusterManagerNodeAction.kt @@ -14,9 +14,9 @@ package org.opensearch.replication.action.autofollow import org.opensearch.action.ActionType import org.opensearch.action.support.master.AcknowledgedResponse -class AutoFollowMasterNodeAction: ActionType(NAME, ::AcknowledgedResponse) { +class AutoFollowClusterManagerNodeAction: ActionType(NAME, ::AcknowledgedResponse) { companion object { const val NAME = "internal:cluster:admin/plugins/replication/autofollow/update" - val INSTANCE = AutoFollowMasterNodeAction() + val INSTANCE = AutoFollowClusterManagerNodeAction() } } diff --git a/src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowMasterNodeRequest.kt b/src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowClusterManagerNodeRequest.kt similarity index 94% rename from src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowMasterNodeRequest.kt rename to src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowClusterManagerNodeRequest.kt index 57f2a8fc..80c05995 100644 --- a/src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowMasterNodeRequest.kt +++ b/src/main/kotlin/org/opensearch/replication/action/autofollow/AutoFollowClusterManagerNodeRequest.kt @@ -20,7 +20,7 @@ import org.opensearch.common.xcontent.ToXContent import org.opensearch.common.xcontent.ToXContentObject import org.opensearch.common.xcontent.XContentBuilder -class AutoFollowMasterNodeRequest: MasterNodeRequest, ToXContentObject { +class AutoFollowClusterManagerNodeRequest: MasterNodeRequest, ToXContentObject { var user: User? = null var autofollowReq: UpdateAutoFollowPatternRequest var withSecurityContext: Boolean = false diff --git a/src/main/kotlin/org/opensearch/replication/action/autofollow/TransportAutoFollowMasterNodeAction.kt b/src/main/kotlin/org/opensearch/replication/action/autofollow/TransportAutoFollowClusterManagerNodeAction.kt similarity index 87% rename from src/main/kotlin/org/opensearch/replication/action/autofollow/TransportAutoFollowMasterNodeAction.kt rename to src/main/kotlin/org/opensearch/replication/action/autofollow/TransportAutoFollowClusterManagerNodeAction.kt index c3fc8554..e3c59444 100644 --- a/src/main/kotlin/org/opensearch/replication/action/autofollow/TransportAutoFollowMasterNodeAction.kt +++ b/src/main/kotlin/org/opensearch/replication/action/autofollow/TransportAutoFollowClusterManagerNodeAction.kt @@ -45,26 +45,26 @@ import org.opensearch.replication.ReplicationException import org.opensearch.threadpool.ThreadPool import org.opensearch.transport.TransportService -class TransportAutoFollowMasterNodeAction @Inject constructor(transportService: TransportService, clusterService: ClusterService, threadPool: ThreadPool, +class TransportAutoFollowClusterManagerNodeAction @Inject constructor(transportService: TransportService, clusterService: ClusterService, threadPool: ThreadPool, actionFilters: ActionFilters, indexNameExpressionResolver: IndexNameExpressionResolver, private val client: NodeClient, private val metadataManager: ReplicationMetadataManager, val indexScopedSettings: IndexScopedSettings) : - TransportMasterNodeAction( - AutoFollowMasterNodeAction.NAME, true, transportService, clusterService, threadPool, actionFilters, - ::AutoFollowMasterNodeRequest, indexNameExpressionResolver), CoroutineScope by GlobalScope { + TransportMasterNodeAction( + AutoFollowClusterManagerNodeAction.NAME, true, transportService, clusterService, threadPool, actionFilters, + ::AutoFollowClusterManagerNodeRequest, indexNameExpressionResolver), CoroutineScope by GlobalScope { companion object { - private val log = LogManager.getLogger(TransportAutoFollowMasterNodeAction::class.java) + private val log = LogManager.getLogger(TransportAutoFollowClusterManagerNodeAction::class.java) const val AUTOFOLLOW_EXCEPTION_GENERIC_STRING = "Failed to update autofollow pattern" } - override fun checkBlock(request: AutoFollowMasterNodeRequest, state: ClusterState): ClusterBlockException? { + override fun checkBlock(request: AutoFollowClusterManagerNodeRequest, state: ClusterState): ClusterBlockException? { return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE) } - override fun masterOperation(masterNodeReq: AutoFollowMasterNodeRequest, state: ClusterState, listener: ActionListener) { - val request = masterNodeReq.autofollowReq - var user = masterNodeReq.user + override fun masterOperation(clusterManagerNodeReq: AutoFollowClusterManagerNodeRequest, state: ClusterState, listener: ActionListener) { + val request = clusterManagerNodeReq.autofollowReq + var user = clusterManagerNodeReq.user launch(threadPool.coroutineContext()) { listener.completeWith { if (request.action == UpdateAutoFollowPatternRequest.Action.REMOVE) { diff --git a/src/main/kotlin/org/opensearch/replication/action/autofollow/TransportUpdateAutoFollowPatternAction.kt b/src/main/kotlin/org/opensearch/replication/action/autofollow/TransportUpdateAutoFollowPatternAction.kt index 9bc735be..4cb32b1a 100644 --- a/src/main/kotlin/org/opensearch/replication/action/autofollow/TransportUpdateAutoFollowPatternAction.kt +++ b/src/main/kotlin/org/opensearch/replication/action/autofollow/TransportUpdateAutoFollowPatternAction.kt @@ -63,8 +63,8 @@ class TransportUpdateAutoFollowPatternAction @Inject constructor(transportServic throw org.opensearch.replication.ReplicationException("Setup checks failed while setting-up auto follow pattern") } } - val masterNodeReq = AutoFollowMasterNodeRequest(user, request) - client.suspendExecute(AutoFollowMasterNodeAction.INSTANCE, masterNodeReq) + val clusterManagerNodeReq = AutoFollowClusterManagerNodeRequest(user, request) + client.suspendExecute(AutoFollowClusterManagerNodeAction.INSTANCE, clusterManagerNodeReq) } } } diff --git a/src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexMasterNodeAction.kt b/src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexClusterManagerNodeAction.kt similarity index 70% rename from src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexMasterNodeAction.kt rename to src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexClusterManagerNodeAction.kt index 7fc14530..aebfb6cc 100644 --- a/src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexMasterNodeAction.kt +++ b/src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexClusterManagerNodeAction.kt @@ -14,9 +14,9 @@ package org.opensearch.replication.action.index import org.opensearch.action.ActionType import org.opensearch.action.support.master.AcknowledgedResponse -class ReplicateIndexMasterNodeAction private constructor(): ActionType(NAME, ::AcknowledgedResponse) { +class ReplicateIndexClusterManagerNodeAction private constructor(): ActionType(NAME, ::AcknowledgedResponse) { companion object { const val NAME = "internal:indices/admin/plugins/replication/index/start" - val INSTANCE: ReplicateIndexMasterNodeAction = ReplicateIndexMasterNodeAction() + val INSTANCE: ReplicateIndexClusterManagerNodeAction = ReplicateIndexClusterManagerNodeAction() } } diff --git a/src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexMasterNodeRequest.kt b/src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexClusterManagerNodeRequest.kt similarity index 94% rename from src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexMasterNodeRequest.kt rename to src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexClusterManagerNodeRequest.kt index b25a0d8e..2c06b6ca 100644 --- a/src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexMasterNodeRequest.kt +++ b/src/main/kotlin/org/opensearch/replication/action/index/ReplicateIndexClusterManagerNodeRequest.kt @@ -20,8 +20,8 @@ import org.opensearch.common.xcontent.ToXContent import org.opensearch.common.xcontent.ToXContentObject import org.opensearch.common.xcontent.XContentBuilder -class ReplicateIndexMasterNodeRequest: - MasterNodeRequest, ToXContentObject { +class ReplicateIndexClusterManagerNodeRequest: + MasterNodeRequest, ToXContentObject { var user: User? = null var replicateIndexReq: ReplicateIndexRequest diff --git a/src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexAction.kt b/src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexAction.kt index 11a60aa1..69d56bdf 100644 --- a/src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexAction.kt +++ b/src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexAction.kt @@ -105,8 +105,8 @@ class TransportReplicateIndexAction @Inject constructor(transportService: Transp // Setup checks are successful and trigger replication for the index // permissions evaluation to trigger replication is based on the current security context set - val internalReq = ReplicateIndexMasterNodeRequest(user, request) - client.suspendExecute(ReplicateIndexMasterNodeAction.INSTANCE, internalReq) + val internalReq = ReplicateIndexClusterManagerNodeRequest(user, request) + client.suspendExecute(ReplicateIndexClusterManagerNodeAction.INSTANCE, internalReq) ReplicateIndexResponse(true) } } diff --git a/src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexMasterNodeAction.kt b/src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexClusterManagerNodeAction.kt similarity index 87% rename from src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexMasterNodeAction.kt rename to src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexClusterManagerNodeAction.kt index 4d9fa108..1a926798 100644 --- a/src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexMasterNodeAction.kt +++ b/src/main/kotlin/org/opensearch/replication/action/index/TransportReplicateIndexClusterManagerNodeAction.kt @@ -52,22 +52,22 @@ import org.opensearch.threadpool.ThreadPool import org.opensearch.transport.TransportService import java.io.IOException -class TransportReplicateIndexMasterNodeAction @Inject constructor(transportService: TransportService, - clusterService: ClusterService, - threadPool: ThreadPool, - actionFilters: ActionFilters, - indexNameExpressionResolver: IndexNameExpressionResolver, - val indexScopedSettings: IndexScopedSettings, - private val persistentTasksService: PersistentTasksService, - private val nodeClient : NodeClient, - private val repositoryService: RepositoriesService, - private val replicationMetadataManager: ReplicationMetadataManager) : - TransportMasterNodeAction(ReplicateIndexMasterNodeAction.NAME, - transportService, clusterService, threadPool, actionFilters, ::ReplicateIndexMasterNodeRequest, indexNameExpressionResolver), +class TransportReplicateIndexClusterManagerNodeAction @Inject constructor(transportService: TransportService, + clusterService: ClusterService, + threadPool: ThreadPool, + actionFilters: ActionFilters, + indexNameExpressionResolver: IndexNameExpressionResolver, + val indexScopedSettings: IndexScopedSettings, + private val persistentTasksService: PersistentTasksService, + private val nodeClient : NodeClient, + private val repositoryService: RepositoriesService, + private val replicationMetadataManager: ReplicationMetadataManager) : + TransportMasterNodeAction(ReplicateIndexClusterManagerNodeAction.NAME, + transportService, clusterService, threadPool, actionFilters, ::ReplicateIndexClusterManagerNodeRequest, indexNameExpressionResolver), CoroutineScope by GlobalScope { companion object { - private val log = LogManager.getLogger(TransportReplicateIndexMasterNodeAction::class.java) + private val log = LogManager.getLogger(TransportReplicateIndexClusterManagerNodeAction::class.java) } override fun executor(): String { @@ -80,7 +80,7 @@ class TransportReplicateIndexMasterNodeAction @Inject constructor(transportServi } @Throws(Exception::class) - override fun masterOperation(request: ReplicateIndexMasterNodeRequest, state: ClusterState, + override fun masterOperation(request: ReplicateIndexClusterManagerNodeRequest, state: ClusterState, listener: ActionListener) { val replicateIndexReq = request.replicateIndexReq val user = request.user @@ -151,7 +151,7 @@ class TransportReplicateIndexMasterNodeAction @Inject constructor(transportServi return remoteState.metadata.index(leaderIndex) ?: throw IndexNotFoundException("${leaderAlias}:${leaderIndex}") } - override fun checkBlock(request: ReplicateIndexMasterNodeRequest, state: ClusterState): ClusterBlockException? { + override fun checkBlock(request: ReplicateIndexClusterManagerNodeRequest, state: ClusterState): ClusterBlockException? { return state.blocks.globalBlockedException(ClusterBlockLevel.METADATA_WRITE) } } diff --git a/src/main/kotlin/org/opensearch/replication/action/replay/TransportReplayChangesAction.kt b/src/main/kotlin/org/opensearch/replication/action/replay/TransportReplayChangesAction.kt index fbbf5f01..b47d7660 100644 --- a/src/main/kotlin/org/opensearch/replication/action/replay/TransportReplayChangesAction.kt +++ b/src/main/kotlin/org/opensearch/replication/action/replay/TransportReplayChangesAction.kt @@ -165,7 +165,7 @@ class TransportReplayChangesAction @Inject constructor(settings: Settings, trans } /** - * Fetches the index mapping from the leader cluster, applies it to the local cluster's master and then waits + * Fetches the index mapping from the leader cluster, applies it to the local cluster's clusterManager and then waits * for the mapping to become available on the current shard. Should only be called on the primary shard . */ private suspend fun syncRemoteMapping(leaderAlias: String, leaderIndex: String, diff --git a/src/main/kotlin/org/opensearch/replication/task/index/IndexReplicationTask.kt b/src/main/kotlin/org/opensearch/replication/task/index/IndexReplicationTask.kt index e499813d..8ca392ae 100644 --- a/src/main/kotlin/org/opensearch/replication/task/index/IndexReplicationTask.kt +++ b/src/main/kotlin/org/opensearch/replication/task/index/IndexReplicationTask.kt @@ -798,7 +798,7 @@ open class IndexReplicationTask(id: Long, type: String, action: String, descript } else { return FailedState(Collections.emptyMap(), """ Unable to find in progress restore for remote index: $leaderAlias:$leaderIndex. - This can happen if there was a badly timed master node failure.""".trimIndent()) + This can happen if there was a badly timed cluster manager node failure.""".trimIndent()) } } else if (restore.state() == RestoreInProgress.State.FAILURE) { val failureReason = restore.shards().values().find { diff --git a/src/test/kotlin/org/opensearch/replication/integ/rest/ClusterRerouteFollowerIT.kt b/src/test/kotlin/org/opensearch/replication/integ/rest/ClusterRerouteFollowerIT.kt index da6a2bf2..87cb313b 100644 --- a/src/test/kotlin/org/opensearch/replication/integ/rest/ClusterRerouteFollowerIT.kt +++ b/src/test/kotlin/org/opensearch/replication/integ/rest/ClusterRerouteFollowerIT.kt @@ -44,7 +44,7 @@ class ClusterRerouteFollowerIT : MultiClusterRestTestCase() { followerClient.startReplication(StartReplicationRequest("source", leaderIndexName, followerIndexName)) insertDocToIndex(LEADER, "1", "dummy data 1",leaderIndexName) - //Querying ES cluster throws random exceptions like MasterNotDiscovered or ShardsFailed etc, so catching them and retrying + //Querying ES cluster throws random exceptions like ClusterManagerNotDiscovered or ShardsFailed etc, so catching them and retrying assertBusy ({ try { Assertions.assertThat(docs(FOLLOWER, followerIndexName)).contains("dummy data 1") diff --git a/src/test/kotlin/org/opensearch/replication/integ/rest/ClusterRerouteLeaderIT.kt b/src/test/kotlin/org/opensearch/replication/integ/rest/ClusterRerouteLeaderIT.kt index 8ce57fc1..3d40ca89 100644 --- a/src/test/kotlin/org/opensearch/replication/integ/rest/ClusterRerouteLeaderIT.kt +++ b/src/test/kotlin/org/opensearch/replication/integ/rest/ClusterRerouteLeaderIT.kt @@ -44,7 +44,7 @@ class ClusterRerouteLeaderIT : MultiClusterRestTestCase() { followerClient.startReplication(StartReplicationRequest("source", leaderIndexName, followerIndexName)) insertDocToIndex(LEADER, "1", "dummy data 1",leaderIndexName) - //Querying ES cluster throws random exceptions like MasterNotDiscovered or ShardsFailed etc, so catching them and retrying + //Querying ES cluster throws random exceptions like ClusterManagerNotDiscovered or ShardsFailed etc, so catching them and retrying assertBusy ({ try { Assertions.assertThat(docs(FOLLOWER, followerIndexName)).contains("dummy data 1") diff --git a/src/test/kotlin/org/opensearch/replication/integ/rest/SecurityCustomRolesIT.kt b/src/test/kotlin/org/opensearch/replication/integ/rest/SecurityCustomRolesIT.kt index 8500c2eb..8d5be9cc 100644 --- a/src/test/kotlin/org/opensearch/replication/integ/rest/SecurityCustomRolesIT.kt +++ b/src/test/kotlin/org/opensearch/replication/integ/rest/SecurityCustomRolesIT.kt @@ -399,7 +399,7 @@ class SecurityCustomRolesIT: SecurityBase() { requestOptions = RequestOptions.DEFAULT.addBasicAuthHeader("testUser1","password")) insertDocToIndex(LEADER, "1", "dummy data 1",leaderIndexName) - //Querying ES cluster throws random exceptions like MasterNotDiscovered or ShardsFailed etc, so catching them and retrying + //Querying ES cluster throws random exceptions like ClusterManagerNotDiscovered or ShardsFailed etc, so catching them and retrying assertBusy ({ try { Assertions.assertThat(docs(FOLLOWER, followerIndexName)).contains("dummy data 1") diff --git a/src/test/kotlin/org/opensearch/replication/integ/rest/SecurityCustomRolesLeaderIT.kt b/src/test/kotlin/org/opensearch/replication/integ/rest/SecurityCustomRolesLeaderIT.kt index 05ea40aa..af81a6b5 100644 --- a/src/test/kotlin/org/opensearch/replication/integ/rest/SecurityCustomRolesLeaderIT.kt +++ b/src/test/kotlin/org/opensearch/replication/integ/rest/SecurityCustomRolesLeaderIT.kt @@ -72,7 +72,7 @@ class SecurityCustomRolesLeaderIT: SecurityBase() { requestOptions = RequestOptions.DEFAULT.addBasicAuthHeader("testUser1","password")) insertDocToIndex(LEADER, "1", "dummy data 1",leaderIndexName) - //Querying ES cluster throws random exceptions like MasterNotDiscovered or ShardsFailed etc, so catching them and retrying + //Querying ES cluster throws random exceptions like ClusterManagerNotDiscovered or ShardsFailed etc, so catching them and retrying assertBusy ({ try { Assertions.assertThat(docs(FOLLOWER, followerIndexName)).contains("dummy data 1")