Skip to content

Commit 9c06228

Browse files
authored
Fix system_repository setting is restored after cluster metadata recovery from local disk (opensearch-project#10556)
Signed-off-by: bansvaru <bansvaru@amazon.com>
1 parent 90c4297 commit 9c06228

3 files changed

Lines changed: 26 additions & 3 deletions

File tree

server/src/internalClusterTest/java/org/opensearch/remotestore/RemoteStoreRepositoryRegistrationIT.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,31 @@
88

99
package org.opensearch.remotestore;
1010

11+
import org.opensearch.action.admin.cluster.repositories.get.GetRepositoriesAction;
12+
import org.opensearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
13+
import org.opensearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
1114
import org.opensearch.client.Client;
1215
import org.opensearch.cluster.metadata.RepositoryMetadata;
1316
import org.opensearch.common.settings.Settings;
17+
import org.opensearch.common.xcontent.XContentType;
1418
import org.opensearch.core.common.unit.ByteSizeValue;
19+
import org.opensearch.core.xcontent.MediaTypeRegistry;
20+
import org.opensearch.core.xcontent.ToXContent;
21+
import org.opensearch.core.xcontent.XContentBuilder;
1522
import org.opensearch.plugins.Plugin;
1623
import org.opensearch.test.OpenSearchIntegTestCase;
1724
import org.opensearch.test.disruption.NetworkDisruption;
1825
import org.opensearch.test.transport.MockTransportService;
1926

27+
import java.io.IOException;
2028
import java.util.Arrays;
2129
import java.util.Collection;
2230
import java.util.HashSet;
2331
import java.util.Set;
2432
import java.util.stream.Collectors;
2533

34+
import static org.opensearch.repositories.blobstore.BlobStoreRepository.SYSTEM_REPOSITORY_SETTING;
35+
2636
@OpenSearchIntegTestCase.ClusterScope(scope = OpenSearchIntegTestCase.Scope.TEST, numDataNodes = 0)
2737
public class RemoteStoreRepositoryRegistrationIT extends RemoteStoreBaseIntegTestCase {
2838

@@ -162,4 +172,13 @@ public void testNodeRestartPostNonRestrictedSettingsUpdate() throws Exception {
162172

163173
ensureStableCluster(4);
164174
}
175+
176+
public void testSystemRepositorySettingIsHiddenForGetRepositoriesRequest() throws IOException {
177+
GetRepositoriesRequest request = new GetRepositoriesRequest(new String[] { REPOSITORY_NAME });
178+
GetRepositoriesResponse repositoriesResponse = client().execute(GetRepositoriesAction.INSTANCE, request).actionGet();
179+
XContentBuilder builder = MediaTypeRegistry.contentBuilder(randomFrom(XContentType.JSON));
180+
XContentBuilder xContentBuilder = repositoriesResponse.toXContent(builder, ToXContent.EMPTY_PARAMS);
181+
repositoriesResponse = GetRepositoriesResponse.fromXContent(createParser(xContentBuilder));
182+
assertEquals(false, SYSTEM_REPOSITORY_SETTING.get(repositoriesResponse.repositories().get(0).settings()));
183+
}
165184
}

server/src/main/java/org/opensearch/action/admin/cluster/repositories/get/GetRepositoriesResponse.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
import org.opensearch.core.xcontent.XContentParser;
4343

4444
import java.io.IOException;
45-
import java.util.Collections;
4645
import java.util.List;
46+
import java.util.Map;
4747

4848
import static org.opensearch.core.xcontent.XContentParserUtils.ensureExpectedToken;
4949

@@ -83,7 +83,10 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
8383
builder.startObject();
8484
repositories.toXContent(
8585
builder,
86-
new DelegatingMapParams(Collections.singletonMap(RepositoriesMetadata.HIDE_GENERATIONS_PARAM, "true"), params)
86+
new DelegatingMapParams(
87+
Map.of(RepositoriesMetadata.HIDE_GENERATIONS_PARAM, "true", RepositoriesMetadata.HIDE_SYSTEM_REPOSITORY_SETTING, "true"),
88+
params
89+
)
8790
);
8891
builder.endObject();
8992
return builder;

server/src/main/java/org/opensearch/cluster/metadata/RepositoriesMetadata.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public class RepositoriesMetadata extends AbstractNamedDiffable<Custom> implemen
7070
* in {@link org.opensearch.action.admin.cluster.repositories.get.GetRepositoriesResponse}.
7171
*/
7272
public static final String HIDE_GENERATIONS_PARAM = "hide_generations";
73+
public static final String HIDE_SYSTEM_REPOSITORY_SETTING = "hide_system_repository_setting";
7374

7475
private final List<RepositoryMetadata> repositories;
7576

@@ -291,7 +292,7 @@ public static void toXContent(RepositoryMetadata repository, XContentBuilder bui
291292
repository.cryptoMetadata().toXContent(repository.cryptoMetadata(), builder, params);
292293
}
293294
Settings settings = repository.settings();
294-
if (SYSTEM_REPOSITORY_SETTING.get(settings)) {
295+
if (SYSTEM_REPOSITORY_SETTING.get(settings) && params.paramAsBoolean(HIDE_SYSTEM_REPOSITORY_SETTING, false)) {
295296
settings = repository.settings().filter(s -> !s.equals(SYSTEM_REPOSITORY_SETTING.getKey()));
296297
}
297298
builder.startObject("settings");

0 commit comments

Comments
 (0)