From 97a9f69e73608e72d21575168a584054a9e35523 Mon Sep 17 00:00:00 2001 From: awildturtok <1553491+awildturtok@users.noreply.github.com> Date: Thu, 26 Sep 2024 15:47:47 +0200 Subject: [PATCH] Ensure faulty resultProviders dont cause complete lockouts. Also improve logging around faulty resultproviders --- .../conquery/apiv1/QueryProcessor.java | 22 +++++++++---------- .../models/config/CsvResultProvider.java | 6 ++--- .../models/config/ExternalResultProvider.java | 4 +++- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/apiv1/QueryProcessor.java b/backend/src/main/java/com/bakdata/conquery/apiv1/QueryProcessor.java index eafa412779..e2c8448df5 100644 --- a/backend/src/main/java/com/bakdata/conquery/apiv1/QueryProcessor.java +++ b/backend/src/main/java/com/bakdata/conquery/apiv1/QueryProcessor.java @@ -1,7 +1,5 @@ package com.bakdata.conquery.apiv1; -import java.net.MalformedURLException; -import java.net.URISyntaxException; import java.text.NumberFormat; import java.time.LocalDate; import java.util.ArrayList; @@ -21,12 +19,6 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; -import jakarta.inject.Inject; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.validation.Validator; -import jakarta.ws.rs.BadRequestException; -import jakarta.ws.rs.core.Response; -import jakarta.ws.rs.core.UriBuilder; import com.bakdata.conquery.apiv1.execution.ExecutionStatus; import com.bakdata.conquery.apiv1.execution.FullExecutionStatus; @@ -89,6 +81,12 @@ import com.bakdata.conquery.util.QueryUtils; import com.bakdata.conquery.util.QueryUtils.NamespacedIdentifiableCollector; import com.bakdata.conquery.util.io.IdColumnUtil; +import jakarta.inject.Inject; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.validation.Validator; +import jakarta.ws.rs.BadRequestException; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriBuilder; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -174,12 +172,12 @@ private static boolean canFrontendRender(ManagedExecution q) { public static List getResultAssets(List renderer, ManagedExecution exec, UriBuilder uriBuilder, boolean allProviders) { return renderer.stream() - .map(r -> { + .map(rendererProvider -> { try { - return r.generateResultURLs(exec, uriBuilder.clone(), allProviders); + return rendererProvider.generateResultURLs(exec, uriBuilder.clone(), allProviders); } - catch (MalformedURLException | URISyntaxException e) { - log.error("Cannot generate result urls for execution '{}' with provider '{}'", exec.getId(), r.getClass().getName()); + catch (Exception e) { + log.error("Cannot generate result urls for execution '{}' with provider {}", exec.getId(), rendererProvider, e); return null; } }) diff --git a/backend/src/main/java/com/bakdata/conquery/models/config/CsvResultProvider.java b/backend/src/main/java/com/bakdata/conquery/models/config/CsvResultProvider.java index 09bd6f1d6b..fa06f102f8 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/config/CsvResultProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/models/config/CsvResultProvider.java @@ -16,14 +16,12 @@ import com.bakdata.conquery.resources.api.ResultCsvResource; import io.dropwizard.jersey.DropwizardResourceConfig; import jakarta.ws.rs.core.UriBuilder; -import lombok.AllArgsConstructor; -import lombok.NoArgsConstructor; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.glassfish.jersey.internal.inject.AbstractBinder; @Slf4j -@NoArgsConstructor -@AllArgsConstructor +@Data @CPSType(base = ResultRendererProvider.class, id = "CSV") public class CsvResultProvider implements ResultRendererProvider { private boolean hidden = false; diff --git a/backend/src/main/java/com/bakdata/conquery/models/config/ExternalResultProvider.java b/backend/src/main/java/com/bakdata/conquery/models/config/ExternalResultProvider.java index fa364c7fd6..7cf7b8396f 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/config/ExternalResultProvider.java +++ b/backend/src/main/java/com/bakdata/conquery/models/config/ExternalResultProvider.java @@ -2,7 +2,6 @@ import java.util.Collection; import java.util.Collections; -import jakarta.ws.rs.core.UriBuilder; import com.bakdata.conquery.apiv1.execution.ResultAsset; import com.bakdata.conquery.commands.ManagerNode; @@ -13,11 +12,14 @@ import com.bakdata.conquery.models.forms.managed.ExternalExecution; import com.bakdata.conquery.resources.api.ResultExternalResource; import io.dropwizard.jersey.DropwizardResourceConfig; +import jakarta.ws.rs.core.UriBuilder; +import lombok.Data; import lombok.Getter; import lombok.Setter; import org.glassfish.hk2.utilities.binding.AbstractBinder; @Getter +@Data @CPSType(base = ResultRendererProvider.class, id = "EXTERNAL") public class ExternalResultProvider implements ResultRendererProvider {