Skip to content

Commit

Permalink
Correct the diff creation logic
Browse files Browse the repository at this point in the history
Signed-off-by: Sooraj Sinha <soosinha@amazon.com>
  • Loading branch information
soosinha committed May 24, 2024
1 parent 6d1990c commit e022d78
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit e022d78

Please sign in to comment.