@@ -127,7 +127,8 @@ public RepositoryMetaData getMetadata() {
127127 public SnapshotInfo getSnapshotInfo (SnapshotId snapshotId ) {
128128 assert SNAPSHOT_ID .equals (snapshotId ) : "RemoteClusterRepository only supports " + SNAPSHOT_ID + " as the SnapshotId" ;
129129 Client remoteClient = client .getRemoteClusterClient (remoteClusterAlias );
130- ClusterStateResponse response = remoteClient .admin ().cluster ().prepareState ().clear ().setMetaData (true ).setNodes (true ).get ();
130+ ClusterStateResponse response = remoteClient .admin ().cluster ().prepareState ().clear ().setMetaData (true ).setNodes (true )
131+ .get (ccrSettings .getRecoveryActionTimeout ());
131132 ImmutableOpenMap <String , IndexMetaData > indicesMap = response .getState ().metaData ().indices ();
132133 ArrayList <String > indices = new ArrayList <>(indicesMap .size ());
133134 indicesMap .keysIt ().forEachRemaining (indices ::add );
@@ -141,7 +142,8 @@ public MetaData getSnapshotGlobalMetaData(SnapshotId snapshotId) {
141142 Client remoteClient = client .getRemoteClusterClient (remoteClusterAlias );
142143 // We set a single dummy index name to avoid fetching all the index data
143144 ClusterStateRequest clusterStateRequest = CcrRequests .metaDataRequest ("dummy_index_name" );
144- ClusterStateResponse clusterState = remoteClient .admin ().cluster ().state (clusterStateRequest ).actionGet ();
145+ ClusterStateResponse clusterState = remoteClient .admin ().cluster ().state (clusterStateRequest )
146+ .actionGet (ccrSettings .getRecoveryActionTimeout ());
145147 return clusterState .getState ().metaData ();
146148 }
147149
@@ -152,13 +154,14 @@ public IndexMetaData getSnapshotIndexMetaData(SnapshotId snapshotId, IndexId ind
152154 Client remoteClient = client .getRemoteClusterClient (remoteClusterAlias );
153155
154156 ClusterStateRequest clusterStateRequest = CcrRequests .metaDataRequest (leaderIndex );
155- ClusterStateResponse clusterState = remoteClient .admin ().cluster ().state (clusterStateRequest ).actionGet ();
157+ ClusterStateResponse clusterState = remoteClient .admin ().cluster ().state (clusterStateRequest )
158+ .actionGet (ccrSettings .getRecoveryActionTimeout ());
156159
157160 // Validates whether the leader cluster has been configured properly:
158161 PlainActionFuture <String []> future = PlainActionFuture .newFuture ();
159162 IndexMetaData leaderIndexMetaData = clusterState .getState ().metaData ().index (leaderIndex );
160163 ccrLicenseChecker .fetchLeaderHistoryUUIDs (remoteClient , leaderIndexMetaData , future ::onFailure , future ::onResponse );
161- String [] leaderHistoryUUIDs = future .actionGet ();
164+ String [] leaderHistoryUUIDs = future .actionGet (ccrSettings . getRecoveryActionTimeout () );
162165
163166 IndexMetaData .Builder imdBuilder = IndexMetaData .builder (leaderIndex );
164167 // Adding the leader index uuid for each shard as custom metadata:
@@ -188,7 +191,8 @@ public IndexMetaData getSnapshotIndexMetaData(SnapshotId snapshotId, IndexId ind
188191 @ Override
189192 public RepositoryData getRepositoryData () {
190193 Client remoteClient = client .getRemoteClusterClient (remoteClusterAlias );
191- ClusterStateResponse response = remoteClient .admin ().cluster ().prepareState ().clear ().setMetaData (true ).get ();
194+ ClusterStateResponse response = remoteClient .admin ().cluster ().prepareState ().clear ().setMetaData (true )
195+ .get (ccrSettings .getRecoveryActionTimeout ());
192196 MetaData remoteMetaData = response .getState ().getMetaData ();
193197
194198 Map <String , SnapshotId > copiedSnapshotIds = new HashMap <>();
@@ -298,25 +302,26 @@ public IndexShardSnapshotStatus getShardSnapshotStatus(SnapshotId snapshotId, Ve
298302
299303 private void maybeUpdateMappings (Client localClient , Client remoteClient , Index leaderIndex , IndexSettings followerIndexSettings ) {
300304 ClusterStateRequest clusterStateRequest = CcrRequests .metaDataRequest (leaderIndex .getName ());
301- ClusterStateResponse clusterState = remoteClient .admin ().cluster ().state (clusterStateRequest ).actionGet ();
305+ ClusterStateResponse clusterState = remoteClient .admin ().cluster ().state (clusterStateRequest )
306+ .actionGet (ccrSettings .getRecoveryActionTimeout ());
302307 IndexMetaData leaderIndexMetadata = clusterState .getState ().metaData ().getIndexSafe (leaderIndex );
303308 long leaderMappingVersion = leaderIndexMetadata .getMappingVersion ();
304309
305310 if (leaderMappingVersion > followerIndexSettings .getIndexMetaData ().getMappingVersion ()) {
306311 Index followerIndex = followerIndexSettings .getIndex ();
307312 MappingMetaData mappingMetaData = leaderIndexMetadata .mapping ();
308313 PutMappingRequest putMappingRequest = CcrRequests .putMappingRequest (followerIndex .getName (), mappingMetaData );
309- localClient .admin ().indices ().putMapping (putMappingRequest ).actionGet ();
314+ localClient .admin ().indices ().putMapping (putMappingRequest ).actionGet (ccrSettings . getRecoveryActionTimeout () );
310315 }
311316 }
312317
313318 private RestoreSession openSession (String repositoryName , Client remoteClient , ShardId leaderShardId , IndexShard indexShard ,
314319 RecoveryState recoveryState ) {
315320 String sessionUUID = UUIDs .randomBase64UUID ();
316321 PutCcrRestoreSessionAction .PutCcrRestoreSessionResponse response = remoteClient .execute (PutCcrRestoreSessionAction .INSTANCE ,
317- new PutCcrRestoreSessionRequest (sessionUUID , leaderShardId )).actionGet ();
322+ new PutCcrRestoreSessionRequest (sessionUUID , leaderShardId )).actionGet (ccrSettings . getRecoveryActionTimeout () );
318323 return new RestoreSession (repositoryName , remoteClient , sessionUUID , response .getNode (), indexShard , recoveryState ,
319- response .getStoreFileMetaData (), ccrSettings . getRateLimiter () , throttledTime ::inc );
324+ response .getStoreFileMetaData (), ccrSettings , throttledTime ::inc );
320325 }
321326
322327 private static class RestoreSession extends FileRestoreContext implements Closeable {
@@ -327,18 +332,18 @@ private static class RestoreSession extends FileRestoreContext implements Closea
327332 private final String sessionUUID ;
328333 private final DiscoveryNode node ;
329334 private final Store .MetadataSnapshot sourceMetaData ;
330- private final CombinedRateLimiter rateLimiter ;
335+ private final CcrSettings ccrSettings ;
331336 private final LongConsumer throttleListener ;
332337
333338 RestoreSession (String repositoryName , Client remoteClient , String sessionUUID , DiscoveryNode node , IndexShard indexShard ,
334- RecoveryState recoveryState , Store .MetadataSnapshot sourceMetaData , CombinedRateLimiter rateLimiter ,
339+ RecoveryState recoveryState , Store .MetadataSnapshot sourceMetaData , CcrSettings ccrSettings ,
335340 LongConsumer throttleListener ) {
336341 super (repositoryName , indexShard , SNAPSHOT_ID , recoveryState , BUFFER_SIZE );
337342 this .remoteClient = remoteClient ;
338343 this .sessionUUID = sessionUUID ;
339344 this .node = node ;
340345 this .sourceMetaData = sourceMetaData ;
341- this .rateLimiter = rateLimiter ;
346+ this .ccrSettings = ccrSettings ;
342347 this .throttleListener = throttleListener ;
343348 }
344349
@@ -354,14 +359,14 @@ void restoreFiles() throws IOException {
354359
355360 @ Override
356361 protected InputStream fileInputStream (BlobStoreIndexShardSnapshot .FileInfo fileInfo ) {
357- return new RestoreFileInputStream (remoteClient , sessionUUID , node , fileInfo .metadata (), rateLimiter , throttleListener );
362+ return new RestoreFileInputStream (remoteClient , sessionUUID , node , fileInfo .metadata (), ccrSettings , throttleListener );
358363 }
359364
360365 @ Override
361366 public void close () {
362367 ClearCcrRestoreSessionRequest clearRequest = new ClearCcrRestoreSessionRequest (sessionUUID , node );
363368 ClearCcrRestoreSessionAction .ClearCcrRestoreSessionResponse response =
364- remoteClient .execute (ClearCcrRestoreSessionAction .INSTANCE , clearRequest ).actionGet ();
369+ remoteClient .execute (ClearCcrRestoreSessionAction .INSTANCE , clearRequest ).actionGet (ccrSettings . getRecoveryActionTimeout () );
365370 }
366371 }
367372
@@ -372,17 +377,19 @@ private static class RestoreFileInputStream extends InputStream {
372377 private final DiscoveryNode node ;
373378 private final StoreFileMetaData fileToRecover ;
374379 private final CombinedRateLimiter rateLimiter ;
380+ private final CcrSettings ccrSettings ;
375381 private final LongConsumer throttleListener ;
376382
377383 private long pos = 0 ;
378384
379385 private RestoreFileInputStream (Client remoteClient , String sessionUUID , DiscoveryNode node , StoreFileMetaData fileToRecover ,
380- CombinedRateLimiter rateLimiter , LongConsumer throttleListener ) {
386+ CcrSettings ccrSettings , LongConsumer throttleListener ) {
381387 this .remoteClient = remoteClient ;
382388 this .sessionUUID = sessionUUID ;
383389 this .node = node ;
384390 this .fileToRecover = fileToRecover ;
385- this .rateLimiter = rateLimiter ;
391+ this .ccrSettings = ccrSettings ;
392+ this .rateLimiter = ccrSettings .getRateLimiter ();
386393 this .throttleListener = throttleListener ;
387394 }
388395
@@ -407,7 +414,7 @@ public int read(byte[] bytes, int off, int len) throws IOException {
407414 String fileName = fileToRecover .name ();
408415 GetCcrRestoreFileChunkRequest request = new GetCcrRestoreFileChunkRequest (node , sessionUUID , fileName , bytesRequested );
409416 GetCcrRestoreFileChunkAction .GetCcrRestoreFileChunkResponse response =
410- remoteClient .execute (GetCcrRestoreFileChunkAction .INSTANCE , request ).actionGet ();
417+ remoteClient .execute (GetCcrRestoreFileChunkAction .INSTANCE , request ).actionGet (ccrSettings . getRecoveryActionTimeout () );
411418 BytesReference fileChunk = response .getChunk ();
412419
413420 int bytesReceived = fileChunk .length ();
0 commit comments