Skip to content
Snippets Groups Projects
Commit 805039cf authored by Morris Estepa's avatar Morris Estepa
Browse files

Merge branch 'aws-integration-merge-estepamo' into 'master'

Fix issue where hyphen in kind name causes search to fail

See merge request !443

(cherry picked from commit 6eb8d362)

e41b8bd6 Squashed commit of the following 
parent b96cd1c0
No related branches found
No related tags found
2 merge requests!575Delta changes m16 to m18,!444Merge branch 'aws-integration-merge-estepamo' into 'master'
Pipeline #168629 failed
......@@ -52,19 +52,21 @@ public class AwsCrossTenantUtils extends CrossTenantUtils {
builder.append(alias);
}
else {
String index = this.elasticIndexNameResolver.getIndexNameFromKind(kind);
String[] indexArr = index.split("-");
if (indexArr[0].equalsIgnoreCase("*")) {
indexArr[0] = dpsHeaders.getPartitionId();
String[] kindArr = kind.split(":");
if (kindArr[0].equalsIgnoreCase("*")) {
kindArr[0] = dpsHeaders.getPartitionId();
}
else if (indexArr[0].equalsIgnoreCase(dpsHeaders.getPartitionId()) == false) {
else if (kindArr[0].equalsIgnoreCase(dpsHeaders.getPartitionId()) == false) {
throw new BadRequestException("Invalid kind in search request.");
}
builder.append(String.join("-", indexArr));
String newKind = String.join(":", kindArr);
String index = this.elasticIndexNameResolver.getIndexNameFromKind(newKind);
builder.append(index);
}
builder.append(",");
}
builder.append("-.*"); // Exclude Lucene/ElasticSearch internal indices
return builder.toString();
}
}
......@@ -48,6 +48,19 @@ public class AwsCrossTenantUtilsTest {
assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest));
}
@Test
public void should_return_IndexNameWithHyphen_when_partitionIdAndKindMatches() {
String DATA_PARTITION_ID = "tenant-1";
String KIND = "tenant-1:*:*:*";
String INDEX = KIND.replace(":", "-");
String INDEX_NAME = String.format("%s,%s", INDEX, "-.*");
when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID);
when(searchRequest.getKind()).thenReturn(KIND);
when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX);
assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest));
}
@Test
public void should_return_alias_when_searchingHundredSameKindsAndKindMatches() {
Integer KIND_COUNT = 300;
......@@ -88,7 +101,7 @@ public class AwsCrossTenantUtilsTest {
String DATA_PARTITION_ID = "tenant1";
String KIND = "*:*:*:*";
String TENANT_KIND = "tenant1:*:*:*";
String INDEX = KIND.replace(":", "-");
String INDEX = TENANT_KIND.replace(":", "-");
List<String> KINDS = Collections.nCopies(KIND_COUNT, KIND);
String ALIAS = String.format("a%d", TENANT_KIND.hashCode());
Map<String, String> ALIAS_MAP = new HashMap<>();
......@@ -111,7 +124,7 @@ public class AwsCrossTenantUtilsTest {
when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID);
when(searchRequest.getKind()).thenReturn(HUNDREDS_KINDS);
when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX);
when(elasticIndexNameResolver.getIndexNameFromKind(TENANT_KIND)).thenReturn(INDEX);
when(indexAliasService.getIndicesAliases(KINDS)).thenReturn(ALIAS_MAP);
assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest));
......@@ -121,11 +134,12 @@ public class AwsCrossTenantUtilsTest {
public void should_return_PartitionIdIndexName_when_searchingAllKinds() {
String DATA_PARTITION_ID = "tenant1";
String KIND = "*:*:*:*";
String INDEX = KIND.replace(":", "-");
String TENANT_KIND = "tenant1:*:*:*";
String INDEX = TENANT_KIND.replace(":", "-");
String INDEX_NAME = String.format("%s%s,%s", DATA_PARTITION_ID, "-*-*-*", "-.*");
when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID);
when(searchRequest.getKind()).thenReturn(KIND);
when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX);
when(elasticIndexNameResolver.getIndexNameFromKind(TENANT_KIND)).thenReturn(INDEX);
assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest));
}
......@@ -138,7 +152,6 @@ public class AwsCrossTenantUtilsTest {
String INDEX_NAME = String.format("%s,%s", INDEX, "-.*");
when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID);
when(searchRequest.getKind()).thenReturn(KIND);
when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX);
awsCrossTenantUtils.getIndexName(searchRequest); // Should throw an exception.
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment