diff --git a/src/main/java/org/phoebus/channelfinder/processors/aa/ArchiverClient.java b/src/main/java/org/phoebus/channelfinder/processors/aa/ArchiverClient.java index 4ba456ec..94134d31 100644 --- a/src/main/java/org/phoebus/channelfinder/processors/aa/ArchiverClient.java +++ b/src/main/java/org/phoebus/channelfinder/processors/aa/ArchiverClient.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.util.UriComponentsBuilder; +import reactor.core.publisher.Mono; import java.net.URI; import java.time.Duration; @@ -75,7 +76,8 @@ List> getStatuses(Map archivePVS, } private List> getStatusesFromPvListQuery(String archiverURL, List pvs) { - URI pvStatusURI = UriComponentsBuilder.fromUri(URI.create(archiverURL + PV_STATUS_RESOURCE)) + String uriString = archiverURL + PV_STATUS_RESOURCE; + URI pvStatusURI = UriComponentsBuilder.fromUri(URI.create(uriString)) .queryParam("pv", String.join(",", pvs)) .build() .toUri(); @@ -85,6 +87,7 @@ private List> getStatusesFromPvListQuery(String archiverURL, .retrieve() .bodyToMono(String.class) .timeout(Duration.of(TIMEOUT_SECONDS, ChronoUnit.SECONDS)) + .onErrorResume(e -> showError(uriString, e)) .block(); try { @@ -93,18 +96,22 @@ private List> getStatusesFromPvListQuery(String archiverURL, }); } catch (JsonProcessingException e) { logger.log(Level.WARNING, "Could not parse pv status response: " + e.getMessage()); + } catch (Exception e) { + logger.log(Level.WARNING, String.format("Error when trying to get status from pv list query: %s", e.getMessage())); } return List.of(); } private List> getStatusesFromPvListBody(String archiverURL, List pvs) { + String uriString = archiverURL + PV_STATUS_RESOURCE; String response = client.post() - .uri(URI.create(archiverURL + PV_STATUS_RESOURCE)) + .uri(URI.create(uriString)) .contentType(MediaType.APPLICATION_JSON) .bodyValue(pvs) .retrieve() .bodyToMono(String.class) .timeout(Duration.of(TIMEOUT_SECONDS, ChronoUnit.SECONDS)) + .onErrorResume(e -> showError(uriString, e)) .block(); // Structure of response is @@ -117,19 +124,23 @@ private List> getStatusesFromPvListBody(String archiverURL, }); } catch (JsonProcessingException e) { logger.log(Level.WARNING, "Could not parse pv status response: " + e.getMessage()); + } catch (Exception e) { + logger.log(Level.WARNING, String.format("Error when trying to get status from pv list query: %s", e.getMessage())); } return List.of(); } private void submitAction(String values, String endpoint, String aaURL) { + String uriString = aaURL + MGMT_RESOURCE + endpoint; try { String response = client.post() - .uri(URI.create(aaURL + MGMT_RESOURCE + endpoint)) + .uri(URI.create(uriString)) .contentType(MediaType.APPLICATION_JSON) .bodyValue(values) .retrieve() .bodyToMono(String.class) .timeout(Duration.of(TIMEOUT_SECONDS, ChronoUnit.SECONDS)) + .onErrorResume(e -> showError(uriString, e)) .block(); logger.log(Level.FINE, () -> response); @@ -192,11 +203,13 @@ List getAAPolicies(String aaURL) { return List.of(); } try { + String uriString = aaURL + POLICY_RESOURCE; String response = client.get() - .uri(URI.create(aaURL + POLICY_RESOURCE)) + .uri(URI.create(uriString)) .retrieve() .bodyToMono(String.class) .timeout(Duration.of(10, ChronoUnit.SECONDS)) + .onErrorResume(e -> showError(uriString, e)) .block(); Map policyMap = objectMapper.readValue(response, Map.class); return new ArrayList<>(policyMap.keySet()); @@ -209,12 +222,13 @@ List getAAPolicies(String aaURL) { String getVersion(String archiverURL) { try { - + String uriString = archiverURL + ARCHIVER_VERSIONS_RESOURCE; String response = client.get() - .uri(URI.create(archiverURL + ARCHIVER_VERSIONS_RESOURCE)) + .uri(URI.create(uriString)) .retrieve() .bodyToMono(String.class) .timeout(Duration.of(TIMEOUT_SECONDS, ChronoUnit.SECONDS)) + .onErrorResume(e -> showError(uriString, e)) .block(); Map versionMap = objectMapper.readValue(response, Map.class); String[] mgmtVersion = versionMap.get("mgmt_version").split("Archiver Appliance Version "); @@ -228,4 +242,9 @@ String getVersion(String archiverURL) { } return ""; } + + private Mono showError(String uriString, Throwable error) { + logger.log(Level.WARNING, String.format("There was an error getting a response with URI: %s. Error: %s", uriString, error.getMessage())); + return Mono.empty(); + } }