From e022d78af4a20f41a6f66f2a164a6887237c8f6e Mon Sep 17 00:00:00 2001 From: Sooraj Sinha Date: Fri, 24 May 2024 13:30:24 +0530 Subject: [PATCH] Correct the diff creation logic Signed-off-by: Sooraj Sinha --- .../remote/ClusterStateDiffManifest.java | 8 ++-- .../remote/RemoteIndexMetadataTests.java | 47 +++++++++++-------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/server/src/main/java/org/opensearch/gateway/remote/ClusterStateDiffManifest.java b/server/src/main/java/org/opensearch/gateway/remote/ClusterStateDiffManifest.java index 98dbadbdaefaa..3e65c005a724c 100644 --- a/server/src/main/java/org/opensearch/gateway/remote/ClusterStateDiffManifest.java +++ b/server/src/main/java/org/opensearch/gateway/remote/ClusterStateDiffManifest.java @@ -61,12 +61,12 @@ public class ClusterStateDiffManifest implements ToXContentObject { ClusterStateDiffManifest(ClusterState state, ClusterState previousState) { fromStateUUID = previousState.stateUUID(); toStateUUID = state.stateUUID(); - coordinationMetadataUpdated = Metadata.isCoordinationMetadataEqual(state.metadata(), previousState.metadata()); - settingsMetadataUpdated = Metadata.isSettingsMetadataEqual(state.metadata(), previousState.metadata()); - templatesMetadataUpdated = Metadata.isTemplatesMetadataEqual(state.metadata(), previousState.metadata()); + coordinationMetadataUpdated = !Metadata.isCoordinationMetadataEqual(state.metadata(), previousState.metadata()); + settingsMetadataUpdated = !Metadata.isSettingsMetadataEqual(state.metadata(), previousState.metadata()); + templatesMetadataUpdated = !Metadata.isTemplatesMetadataEqual(state.metadata(), previousState.metadata()); indicesDeleted = findRemovedIndices(state.metadata().indices(), previousState.metadata().indices()); indicesUpdated = findUpdatedIndices(state.metadata().indices(), previousState.metadata().indices()); - clusterBlocksUpdated = state.blocks().equals(previousState.blocks()); + clusterBlocksUpdated = !state.blocks().equals(previousState.blocks()); discoveryNodesUpdated = state.nodes().delta(previousState.nodes()).hasChanges(); customMetadataUpdated = new ArrayList<>(); for (String custom : state.metadata().customs().keySet()) { diff --git a/server/src/test/java/org/opensearch/gateway/remote/RemoteIndexMetadataTests.java b/server/src/test/java/org/opensearch/gateway/remote/RemoteIndexMetadataTests.java index b049e381f0705..2cae382458c83 100644 --- a/server/src/test/java/org/opensearch/gateway/remote/RemoteIndexMetadataTests.java +++ b/server/src/test/java/org/opensearch/gateway/remote/RemoteIndexMetadataTests.java @@ -10,7 +10,6 @@ import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.lessThan; import static org.hamcrest.Matchers.lessThanOrEqualTo; import static org.hamcrest.Matchers.nullValue; import static org.mockito.Mockito.mock; @@ -27,7 +26,6 @@ import org.opensearch.Version; import org.opensearch.cluster.metadata.IndexMetadata; import org.opensearch.common.blobstore.BlobPath; -import org.opensearch.common.blobstore.BlobStore; import org.opensearch.common.compress.DeflateCompressor; import org.opensearch.common.settings.ClusterSettings; import org.opensearch.common.settings.Settings; @@ -72,66 +70,75 @@ public void tearDown() throws Exception { public void testGet() { IndexMetadata indexMetadata = getIndexMetadata(); - RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); assertThat(remoteObjectForUpload.get(), is(indexMetadata)); - RemoteIndexMetadata remoteObjectForDownload = new RemoteIndexMetadata(TEST_BLOB_NAME, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForDownload = new RemoteIndexMetadata(TEST_BLOB_NAME, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); assertThat(remoteObjectForDownload.get(), nullValue()); } public void testClusterUUID() { IndexMetadata indexMetadata = getIndexMetadata(); - RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); assertThat(remoteObjectForUpload.clusterUUID(), is(clusterUUID)); - RemoteIndexMetadata remoteObjectForDownload = new RemoteIndexMetadata(TEST_BLOB_NAME, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForDownload = new RemoteIndexMetadata(TEST_BLOB_NAME, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); assertThat(remoteObjectForDownload.clusterUUID(), is(clusterUUID)); } public void testFullBlobName() { IndexMetadata indexMetadata = getIndexMetadata(); - RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); assertThat(remoteObjectForUpload.getFullBlobName(), nullValue()); - // todo test after uploading as well - RemoteIndexMetadata remoteObjectForDownload = new RemoteIndexMetadata(TEST_BLOB_NAME, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForDownload = new RemoteIndexMetadata(TEST_BLOB_NAME, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); assertThat(remoteObjectForDownload.getFullBlobName(), is(TEST_BLOB_NAME)); } public void testBlobPathParameters() { IndexMetadata indexMetadata = getIndexMetadata(); - RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); BlobPathParameters params = remoteObjectForUpload.getBlobPathParameters(); assertThat(params.getPathTokens(), is(List.of(INDEX_PATH_TOKEN))); - assertThat(params.getFilePrefix(),is("metadata")); + assertThat(params.getFilePrefix(), is("metadata")); } public void testGenerateBlobFileName() { IndexMetadata indexMetadata = getIndexMetadata(); - RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); String blobFileName = remoteObjectForUpload.generateBlobFileName(); String[] nameTokens = blobFileName.split(RemoteClusterStateUtils.DELIMITER); - assertThat(nameTokens[0] ,is("metadata")); - assertThat(RemoteStoreUtils.invertLong(nameTokens[1]) , is(VERSION)); - assertThat(RemoteStoreUtils.invertLong(nameTokens[2]) , lessThanOrEqualTo(System.currentTimeMillis())); - assertThat(nameTokens[3] , is(String.valueOf(INDEX_METADATA_CURRENT_CODEC_VERSION))); + assertThat(nameTokens[0], is("metadata")); + assertThat(RemoteStoreUtils.invertLong(nameTokens[1]), is(VERSION)); + assertThat(RemoteStoreUtils.invertLong(nameTokens[2]), lessThanOrEqualTo(System.currentTimeMillis())); + assertThat(nameTokens[3], is(String.valueOf(INDEX_METADATA_CURRENT_CODEC_VERSION))); } public void testGetUploadedMetadata() throws IOException { IndexMetadata indexMetadata = getIndexMetadata(); - RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); assertThrows(AssertionError.class, remoteObjectForUpload::getUploadedMetadata); try (InputStream inputStream = remoteObjectForUpload.serialize()) { UploadedMetadata uploadedMetadata = remoteObjectForUpload.getUploadedMetadata(); - assertThat(uploadedMetadata.getComponent() ,is(COMPONENT_PREFIX+"test-index")); - assertThat(uploadedMetadata.getUploadedFilename() ,is(remoteObjectForUpload.getFullBlobName())); + assertThat(uploadedMetadata.getComponent(), is(COMPONENT_PREFIX + "test-index")); + assertThat(uploadedMetadata.getUploadedFilename(), is(remoteObjectForUpload.getFullBlobName())); } } public void testSerDe() throws IOException { IndexMetadata indexMetadata = getIndexMetadata(); - RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, clusterName, threadPool); + RemoteIndexMetadata remoteObjectForUpload = new RemoteIndexMetadata(indexMetadata, clusterUUID, blobStoreTransferService, blobStoreRepository, + clusterName, threadPool); try (InputStream inputStream = remoteObjectForUpload.serialize()) { assertThat(inputStream.available(), greaterThan(0)); IndexMetadata readIndexMetadata = remoteObjectForUpload.deserialize(inputStream);