Skip to content

Commit f7159b1

Browse files
authored
Fix global tenant id not set default value bypassing issue (#260)
* Fix global tenant id not set default value bypassing issue Signed-off-by: zane-neo <[email protected]> * Add UT to cover Signed-off-by: zane-neo <[email protected]> --------- Signed-off-by: zane-neo <[email protected]>
1 parent d660b89 commit f7159b1

File tree

5 files changed

+17
-4
lines changed

5 files changed

+17
-4
lines changed

core/src/main/java/org/opensearch/remote/metadata/client/AbstractSdkClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ private GetDataObjectResponse replaceGlobalTenantId(GetDataObjectRequest request
195195

196196
@Override
197197
public CompletionStage<Boolean> isGlobalResource(String index, String id, Executor executor, Boolean isMultiTenancyEnabled) {
198-
if (Boolean.FALSE.equals(isMultiTenancyEnabled) || globalTenantId == null) {
198+
if (Boolean.FALSE.equals(isMultiTenancyEnabled) || Strings.isNullOrEmpty(globalTenantId)) {
199199
return CompletableFuture.completedFuture(false);
200200
}
201201
GetDataObjectRequest request = GetDataObjectRequest.builder().index(index).id(id).tenantId(globalTenantId).build();

core/src/main/java/org/opensearch/remote/metadata/client/impl/LocalClusterIndicesClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public CompletionStage<GetDataObjectResponse> getDataObjectAsync(
166166
Boolean isMultiTenancyEnabled
167167
) {
168168
return doPrivileged(() -> {
169-
if (Boolean.FALSE.equals(isMultiTenancyEnabled) || globalTenantId == null) {
169+
if (Boolean.FALSE.equals(isMultiTenancyEnabled) || Strings.isNullOrEmpty(globalTenantId)) {
170170
return innerGetDataObjectAsync(request, executor, isMultiTenancyEnabled);
171171
}
172172

ddb-client/src/main/java/org/opensearch/remote/metadata/client/impl/DDBOpenSearchClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ public CompletionStage<GetDataObjectResponse> getDataObjectAsync(
283283
Executor executor,
284284
Boolean isMultiTenancyEnabled
285285
) {
286-
if (Boolean.FALSE.equals(isMultiTenancyEnabled) || globalTenantId == null) {
286+
if (Boolean.FALSE.equals(isMultiTenancyEnabled) || Strings.isNullOrEmpty(globalTenantId)) {
287287
return innerGetDataObjectAsync(request, executor, isMultiTenancyEnabled);
288288
}
289289
// Try fetch from global cache.

ddb-client/src/test/java/org/opensearch/remote/metadata/client/impl/DDBOpenSearchClientTests.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,6 +1236,19 @@ public void testGetDataObject_globalTenantIdDisabled_foundGlobalResourceFromDDB(
12361236
assertEquals(TEST_TENANT_ID, getDataObjectResponse.getResponse().getSourceAsMap().get(TENANT_ID_FIELD_KEY));
12371237
}
12381238

1239+
@Test
1240+
public void testGetDataObject_globalTenantIdDisabled_fetchNonExistsResource_noException() {
1241+
GetDataObjectRequest getRequest = GetDataObjectRequest.builder().index(TEST_INDEX).id(TEST_ID).tenantId(TEST_TENANT_ID).build();
1242+
Map<String, AttributeValue> itemResponse = new HashMap<>();
1243+
GetItemResponse getItemResponse = GetItemResponse.builder().item(itemResponse).build();
1244+
when(dynamoDbAsyncClient.getItem(any(GetItemRequest.class))).thenReturn(CompletableFuture.completedFuture(getItemResponse));
1245+
GetDataObjectResponse getDataObjectResponse = sdkClient.getDataObjectAsync(getRequest, testThreadPool.executor(TEST_THREAD_POOL))
1246+
.toCompletableFuture()
1247+
.join();
1248+
verify(dynamoDbAsyncClient, times(1)).getItem(getItemRequestArgumentCaptor.capture());
1249+
assertFalse(getDataObjectResponse.getResponse().isExists());
1250+
}
1251+
12391252
@Test
12401253
public void testGetDataObject_globalTenantIdEnabled_foundGlobalResourceFromCache() {
12411254
GetDataObjectRequest getRequest = GetDataObjectRequest.builder().index(TEST_INDEX).id(TEST_ID).tenantId(TEST_TENANT_ID).build();

remote-client/src/main/java/org/opensearch/remote/metadata/client/impl/RemoteClusterIndicesClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public CompletionStage<GetDataObjectResponse> getDataObjectAsync(
244244
Executor executor,
245245
Boolean isMultiTenancyEnabled
246246
) {
247-
if (Boolean.FALSE.equals(isMultiTenancyEnabled) || globalTenantId == null) {
247+
if (Boolean.FALSE.equals(isMultiTenancyEnabled) || Strings.isNullOrEmpty(globalTenantId)) {
248248
return innerGetDataObjectAsync(request, executor, isMultiTenancyEnabled);
249249
}
250250
// First check cache for global resource

0 commit comments

Comments
 (0)