@@ -632,7 +632,8 @@ static Optional<String> validateOverlap(Set<String> requestSettings, Settings co
632632 IndexMetadata buildAndValidateTemporaryIndexMetadata (
633633 final Settings aggregatedIndexSettings ,
634634 final CreateIndexClusterStateUpdateRequest request ,
635- final int routingNumShards
635+ final int routingNumShards ,
636+ final ClusterState clusterState
636637 ) {
637638
638639 final boolean isHiddenAfterTemplates = IndexMetadata .INDEX_HIDDEN_SETTING .get (aggregatedIndexSettings );
@@ -642,7 +643,7 @@ IndexMetadata buildAndValidateTemporaryIndexMetadata(
642643 tmpImdBuilder .setRoutingNumShards (routingNumShards );
643644 tmpImdBuilder .settings (aggregatedIndexSettings );
644645 tmpImdBuilder .system (isSystem );
645- addRemoteStoreCustomMetadata (tmpImdBuilder , true );
646+ addRemoteStoreCustomMetadata (tmpImdBuilder , true , clusterState );
646647
647648 if (request .context () != null ) {
648649 tmpImdBuilder .context (request .context ());
@@ -661,7 +662,9 @@ IndexMetadata buildAndValidateTemporaryIndexMetadata(
661662 * @param tmpImdBuilder index metadata builder.
662663 * @param assertNullOldType flag to verify that the old remote store path type is null
663664 */
664- public void addRemoteStoreCustomMetadata (IndexMetadata .Builder tmpImdBuilder , boolean assertNullOldType ) {
665+ public void addRemoteStoreCustomMetadata (IndexMetadata .Builder tmpImdBuilder , boolean assertNullOldType , ClusterState clusterState ) {
666+
667+ boolean isRestoreFromSnapshot = !assertNullOldType ;
665668 if (remoteStoreCustomMetadataResolver == null ) {
666669 return ;
667670 }
@@ -676,6 +679,27 @@ public void addRemoteStoreCustomMetadata(IndexMetadata.Builder tmpImdBuilder, bo
676679 boolean isTranslogMetadataEnabled = remoteStoreCustomMetadataResolver .isTranslogMetadataEnabled ();
677680 remoteCustomData .put (IndexMetadata .TRANSLOG_METADATA_KEY , Boolean .toString (isTranslogMetadataEnabled ));
678681
682+ Optional <DiscoveryNode > remoteNode = clusterState .nodes ()
683+ .getNodes ()
684+ .values ()
685+ .stream ()
686+ .filter (DiscoveryNode ::isRemoteStoreNode )
687+ .findFirst ();
688+
689+ String sseEnabledIndex = existingCustomData == null
690+ ? null
691+ : existingCustomData .get (IndexMetadata .REMOTE_STORE_SSE_ENABLED_INDEX_KEY );
692+ if (isRestoreFromSnapshot && sseEnabledIndex != null ) {
693+ remoteCustomData .put (IndexMetadata .REMOTE_STORE_SSE_ENABLED_INDEX_KEY , sseEnabledIndex );
694+ }
695+
696+ if (remoteNode .isPresent ()
697+ && !isRestoreFromSnapshot
698+ && RemoteStoreSettings .isServerSideEncryptionRepoEnabled (clusterState .nodes ().getMinNodeVersion ())
699+ && RemoteStoreNodeAttribute .isRemoteStoreServerSideEncryptionEnabled (remoteNode .get ().getAttributes ())) {
700+ remoteCustomData .put (IndexMetadata .REMOTE_STORE_SSE_ENABLED_INDEX_KEY , Boolean .toString (true ));
701+ }
702+
679703 // Determine the path type for use using the remoteStorePathResolver.
680704 RemoteStorePathStrategy newPathStrategy = remoteStoreCustomMetadataResolver .getPathStrategy ();
681705 remoteCustomData .put (PathType .NAME , newPathStrategy .getType ().name ());
@@ -730,7 +754,9 @@ private ClusterState applyCreateIndexRequestWithV1Templates(
730754 clusterService .getClusterSettings ()
731755 );
732756 int routingNumShards = getIndexNumberOfRoutingShards (aggregatedIndexSettings , null );
733- IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards );
757+ IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards , currentState );
758+
759+ // buildServerSideEncryptionSetting(tmpImd, clusterService.getClusterSettings(), false);
734760
735761 return applyCreateIndexWithTemporaryService (
736762 currentState ,
@@ -755,6 +781,23 @@ private ClusterState applyCreateIndexRequestWithV1Templates(
755781 );
756782 }
757783
784+ // private void buildServerSideEncryptionSetting(IndexMetadata tmpImd, ClusterSettings clusterSettings, boolean isRestore) {
785+ //
786+ // if (isRestore)
787+ // if (remoteStoreCustomMetadataResolver == null) {
788+ // return;
789+ // }
790+ //
791+ // Map<String, String> remoteCustomMetadata = tmpImd.getCustomData(IndexMetadata.REMOTE_STORE_CUSTOM_KEY);
792+ //
793+ // String sseEnabledIndex = existingCustomData == null ? null : existingCustomData.get(IndexMetadata.SETTING_REMOTE_STORE_SSE_ENABLED);
794+ // if (assertNullOldType || sseEnabledIndex != null) {
795+ //
796+ // }
797+ // remoteCustomData.put(IndexMetadata.SETTING_REMOTE_STORE_SSE_ENABLED, Boolean.toString(true));
798+ //
799+ // }
800+
758801 private ClusterState applyCreateIndexRequestWithV2Template (
759802 final ClusterState currentState ,
760803 final CreateIndexClusterStateUpdateRequest request ,
@@ -795,7 +838,7 @@ private ClusterState applyCreateIndexRequestWithV2Template(
795838 clusterService .getClusterSettings ()
796839 );
797840 int routingNumShards = getIndexNumberOfRoutingShards (aggregatedIndexSettings , null );
798- IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards );
841+ IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards , currentState );
799842
800843 return applyCreateIndexWithTemporaryService (
801844 currentState ,
@@ -879,7 +922,7 @@ private ClusterState applyCreateIndexRequestWithExistingMetadata(
879922 clusterService .getClusterSettings ()
880923 );
881924 final int routingNumShards = getIndexNumberOfRoutingShards (aggregatedIndexSettings , sourceMetadata );
882- IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards );
925+ IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards , currentState );
883926
884927 return applyCreateIndexWithTemporaryService (
885928 currentState ,
@@ -1056,7 +1099,7 @@ static Settings aggregateIndexSettings(
10561099 indexSettingsBuilder .put (SETTING_INDEX_UUID , UUIDs .randomBase64UUID ());
10571100
10581101 updateReplicationStrategy (indexSettingsBuilder , request .settings (), settings , combinedTemplateSettings , clusterSettings );
1059- updateRemoteStoreSettings (indexSettingsBuilder , currentState , clusterSettings , settings , request .index (), false );
1102+ updateRemoteStoreSettings (indexSettingsBuilder , currentState , clusterSettings , settings , request .index ());
10601103
10611104 if (sourceMetadata != null ) {
10621105 assert request .resizeType () != null ;
@@ -1162,8 +1205,7 @@ public static void updateRemoteStoreSettings(
11621205 ClusterState clusterState ,
11631206 ClusterSettings clusterSettings ,
11641207 Settings nodeSettings ,
1165- String indexName ,
1166- boolean isRestoreFromSnapshot
1208+ String indexName
11671209 ) {
11681210 if ((isRemoteDataAttributePresent (nodeSettings )
11691211 && clusterSettings .get (REMOTE_STORE_COMPATIBILITY_MODE_SETTING ).equals (RemoteStoreNodeService .CompatibilityMode .STRICT ))
@@ -1179,12 +1221,6 @@ public static void updateRemoteStoreSettings(
11791221
11801222 if (remoteNode .isPresent ()) {
11811223 segmentRepo = RemoteStoreNodeAttribute .getSegmentRepoName (remoteNode .get ().getAttributes ());
1182- if (!isRestoreFromSnapshot
1183- && RemoteStoreSettings .isServerSideEncryptionRepoEnabled (clusterState .nodes ().getMinNodeVersion ())
1184- && RemoteStoreNodeAttribute .isRemoteStoreServerSideEncryptionEnabled (remoteNode .get ().getAttributes (), segmentRepo )) {
1185- settingsBuilder .put (IndexMetadata .SETTING_REMOTE_STORE_SSE_ENABLED , true );
1186- }
1187-
11881224 translogRepo = RemoteStoreNodeAttribute .getTranslogRepoName (remoteNode .get ().getAttributes ());
11891225 if (segmentRepo != null ) {
11901226 settingsBuilder .put (SETTING_REMOTE_STORE_ENABLED , true ).put (SETTING_REMOTE_SEGMENT_STORE_REPOSITORY , segmentRepo );
0 commit comments