MINOR: fix: application triggers in day-1 (#20324)

* fix: application triggers in day-1

* fix filter for day 1 ai agents

* format
This commit is contained in:
Imri Paran 2025-03-20 13:02:20 +01:00 committed by GitHub
parent 42754a5335
commit ab5cc03e1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,6 +4,7 @@ import static org.openmetadata.common.utils.CommonUtil.nullOrEmpty;
import static org.openmetadata.service.util.EntityUtil.Fields.EMPTY_FIELDS; import static org.openmetadata.service.util.EntityUtil.Fields.EMPTY_FIELDS;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.json.JsonPatch; import javax.json.JsonPatch;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@ -64,22 +65,18 @@ public class RunAppImpl {
return true; return true;
} }
App updatedApp = getUpdatedApp(app, service);
updateApp(appRepository, app, updatedApp);
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
long timeoutMillis = timeoutSeconds * 1000; long timeoutMillis = timeoutSeconds * 1000;
boolean success = true;
Map<String, Object> config = getConfig(app, service);
if (app.getAppType().equals(AppType.Internal)) { if (app.getAppType().equals(AppType.Internal)) {
success = runApp(appRepository, app, waitForCompletion, startTime, timeoutMillis); return runApp(appRepository, app, config, waitForCompletion, startTime, timeoutMillis);
} else { } else {
success = runApp(pipelineServiceClient, app, waitForCompletion, startTime, timeoutMillis); App updatedApp = JsonUtils.deepCopy(app, App.class);
updatedApp.setAppConfiguration(config);
updateApp(appRepository, app, app);
return runApp(pipelineServiceClient, app, waitForCompletion, startTime, timeoutMillis);
} }
updateApp(appRepository, updatedApp, app);
return success;
} }
private boolean validateAppShouldRun(App app, ServiceEntityInterface service) { private boolean validateAppShouldRun(App app, ServiceEntityInterface service) {
@ -89,39 +86,36 @@ public class RunAppImpl {
&& List.of("CollateAIApplication", "CollateAIQualityAgentApplication") && List.of("CollateAIApplication", "CollateAIQualityAgentApplication")
.contains(app.getName())) { .contains(app.getName())) {
return true; return true;
} else if (List.of("DataInsightsApplication", "CollateAITierAgentApplication") } else
.contains(app.getName())) { return List.of("DataInsightsApplication", "CollateAITierAgentApplication")
return true; .contains(app.getName());
} else {
return false;
}
} }
private App getUpdatedApp(App app, ServiceEntityInterface service) { private Map<String, Object> getConfig(App app, ServiceEntityInterface service) {
App updatedApp = JsonUtils.deepCopy(app, App.class); Object config = JsonUtils.deepCopy(app.getAppConfiguration(), Object.class);
Object updatedConfig = JsonUtils.deepCopy(app.getAppConfiguration(), Object.class);
if (app.getName().equals("CollateAIApplication")) { switch (app.getName()) {
(JsonUtils.convertValue(updatedConfig, CollateAIAppConfig.class)) case "CollateAIApplication" -> config =
(JsonUtils.convertValue(config, CollateAIAppConfig.class))
.withFilter( .withFilter(
String.format( String.format(
"{\"query\":{\"bool\":{\"must\":[{\"bool\":{\"must\":[{\"term\":{\"Tier.TagFQN\":\"Tier.Tier1\"}}]}},{\"bool\":{\"must\":[{\"term\":{\"entityType\":\"table\"}}]}},{\"bool\":{\"must\":[{\"term\":{\"service.name.keyword\":\"%s\"}}]}}]}}}", "{\"query\":{\"bool\":{\"must\":[{\"bool\":{\"must\":[{\"term\":{\"Tier.TagFQN\":\"Tier.Tier1\"}},{\"term\":{\"entityType\":\"table\"}},{\"term\":{\"service.displayName.keyword\":\"%s\"}}]}}]}}}",
service.getName().toLowerCase())); service.getName()));
} else if (app.getName().equals("CollateAIQualityAgentApplication")) { case "CollateAIQualityAgentApplication" -> config =
(JsonUtils.convertValue(updatedConfig, CollateAIQualityAgentAppConfig.class)) (JsonUtils.convertValue(config, CollateAIQualityAgentAppConfig.class))
.withFilter( .withFilter(
String.format( String.format(
"{\"query\":{\"bool\":{\"must\":[{\"bool\":{\"must\":[{\"term\":{\"Tier.TagFQN\":\"Tier.Tier1\"}}]}},{\"bool\":{\"must\":[{\"term\":{\"entityType\":\"table\"}}]}},{\"bool\":{\"must\":[{\"term\":{\"service.name.keyword\":\"%s\"}}]}}]}}}", "{\"query\":{\"bool\":{\"must\":[{\"bool\":{\"must\":[{\"term\":{\"entityType\":\"table\"}},{\"term\":{\"service.displayName.keyword\":\"%s\"}}]}}]}}}",
service.getName().toLowerCase())); service.getName()));
} else if (app.getName().equals("CollateAITierAgentApplication")) { case "CollateAITierAgentApplication" -> config =
(JsonUtils.convertValue(updatedConfig, CollateAITierAgentAppConfig.class)) (JsonUtils.convertValue(config, CollateAITierAgentAppConfig.class))
.withFilter( .withFilter(
String.format( String.format(
"{\"query\":{\"bool\":{\"must\":[{\"bool\":{\"must\":[{\"term\":{\"entityType\":\"table\"}}]}},{\"bool\":{\"must\":[{\"term\":{\"service.name.keyword\":\"%s\"}}]}}]}}}", "{\"query\":{\"bool\":{\"must\":[{\"bool\":{\"must\":[{\"term\":{\"entityType\":\"table\"}},{\"term\":{\"service.displayName.keyword\":\"%s\"}}]}}]}}}",
service.getName().toLowerCase())); service.getName()));
} else if (app.getName().equals("DataInsightsApplication")) { case "DataInsightsApplication" -> {
DataInsightsAppConfig updatedAppConfig = DataInsightsAppConfig updatedAppConfig =
(JsonUtils.convertValue(updatedConfig, DataInsightsAppConfig.class)); (JsonUtils.convertValue(config, DataInsightsAppConfig.class));
ModuleConfiguration updatedModuleConfig = ModuleConfiguration updatedModuleConfig =
updatedAppConfig updatedAppConfig
.getModuleConfiguration() .getModuleConfiguration()
@ -131,20 +125,23 @@ public class RunAppImpl {
.withDataAssets( .withDataAssets(
new DataAssetsConfig() new DataAssetsConfig()
.withRetention( .withRetention(
updatedAppConfig.getModuleConfiguration().getDataAssets().getRetention()) updatedAppConfig
.getModuleConfiguration()
.getDataAssets()
.getRetention())
.withServiceFilter( .withServiceFilter(
new ServiceFilter() new ServiceFilter()
.withServiceName(service.getName()) .withServiceName(service.getName())
.withServiceType(Entity.getEntityTypeFromObject(service)))); .withServiceType(Entity.getEntityTypeFromObject(service))));
updatedConfig = config =
updatedAppConfig updatedAppConfig
.withBackfillConfiguration(new BackfillConfiguration().withEnabled(false)) .withBackfillConfiguration(new BackfillConfiguration().withEnabled(false))
.withRecreateDataAssetsIndex(false) .withRecreateDataAssetsIndex(false)
.withModuleConfiguration(updatedModuleConfig); .withModuleConfiguration(updatedModuleConfig);
} }
updatedApp.withAppConfiguration(JsonUtils.getMap(updatedConfig)); }
return updatedApp; return JsonUtils.getMap(config);
} }
private void updateApp(AppRepository repository, App originalApp, App updatedApp) { private void updateApp(AppRepository repository, App originalApp, App updatedApp) {
@ -157,12 +154,13 @@ public class RunAppImpl {
private boolean runApp( private boolean runApp(
AppRepository repository, AppRepository repository,
App app, App app,
Map<String, Object> config,
boolean waitForCompletion, boolean waitForCompletion,
long startTime, long startTime,
long timeoutMillis) { long timeoutMillis) {
ApplicationHandler.getInstance() ApplicationHandler.getInstance()
.triggerApplicationOnDemand( .triggerApplicationOnDemand(
app, Entity.getCollectionDAO(), Entity.getSearchRepository(), null); app, Entity.getCollectionDAO(), Entity.getSearchRepository(), config);
if (waitForCompletion) { if (waitForCompletion) {
return waitForCompletion(repository, app, startTime, timeoutMillis); return waitForCompletion(repository, app, startTime, timeoutMillis);