chore: added cache miss solution (#33193)

This commit is contained in:
Manish Kumar 2024-05-06 16:07:14 +05:30 committed by GitHub
parent a490128c5d
commit 2d1e292a2e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 2 deletions

View File

@ -374,6 +374,11 @@ public class DatasourceContextServiceCEImpl implements DatasourceContextServiceC
});
}
/**
* removes the datasource context entry from the contextMaps. may return an empty mono
* @param datasourceStorage
* @return removed datasourceContext
*/
@Override
public Mono<DatasourceContext<?>> deleteDatasourceContext(DatasourceStorage datasourceStorage) {
@ -390,11 +395,19 @@ public class DatasourceContextServiceCEImpl implements DatasourceContextServiceC
}
return pluginExecutorHelper
.getPluginExecutor(pluginService.findById(datasourceStorage.getPluginId()))
.map(pluginExecutor -> {
.flatMap(pluginExecutor -> {
log.info("Clearing datasource context for datasource storage ID {}.", datasourceStorage.getId());
pluginExecutor.datasourceDestroy(datasourceContext.getConnection());
datasourceContextMonoMap.remove(datasourceContextIdentifier);
return datasourceContextMap.remove(datasourceContextIdentifier);
if (!datasourceContextMap.containsKey(datasourceContextIdentifier)) {
log.info(
"datasourceContextMap does not contain any entry for datasource storage with id: {} ",
datasourceStorage.getId());
return Mono.empty();
}
return Mono.just(datasourceContextMap.remove(datasourceContextIdentifier));
});
}

View File

@ -754,4 +754,23 @@ public class DatasourceContextServiceTest {
})
.verify();
}
@Test
@WithUserDetails(value = "api_user")
public void verifyDeleteDatasourceContext_whenContextDoesNotExist_returnsEmptyMono() {
String sampleDatasourceId = UUID.randomUUID().toString();
String samplePluginId = UUID.randomUUID().toString();
DatasourceStorage datasourceStorage = new DatasourceStorage();
datasourceStorage.setDatasourceId(sampleDatasourceId);
datasourceStorage.setEnvironmentId(defaultEnvironmentId);
datasourceStorage.setPluginId(samplePluginId);
MockPluginExecutor mockPluginExecutor = new MockPluginExecutor();
MockPluginExecutor spyMockPluginExecutor = spy(mockPluginExecutor);
StepVerifier.create(datasourceContextService.deleteDatasourceContext(datasourceStorage))
.expectNextCount(0)
.verifyComplete();
}
}