This is an automated email from the ASF dual-hosted git repository.
akshayrai09 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 2a4b425 [TE] Clean up exceptions in Yaml Resource (#4303)
2a4b425 is described below
commit 2a4b425dc00fa6565c009c4eeb6ea2263acd391d
Author: Akshay Rai <[email protected]>
AuthorDate: Wed Jun 12 10:43:29 2019 -0700
[TE] Clean up exceptions in Yaml Resource (#4303)
---
.../thirdeye/detection/yaml/YamlResource.java | 122 +++++++++------------
1 file changed, 53 insertions(+), 69 deletions(-)
diff --git
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/yaml/YamlResource.java
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/yaml/YamlResource.java
index 2656a52..0f45381 100644
---
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/yaml/YamlResource.java
+++
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/yaml/YamlResource.java
@@ -96,6 +96,13 @@ public class YamlResource {
protected static final Logger LOG =
LoggerFactory.getLogger(YamlResource.class);
private static ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+ private enum YamlOperations {
+ CREATING, UPDATING, PREVIEW, RUNNING
+ }
+
+ private static final String PROP_DETECTION = "detection";
+ private static final String PROP_SUBSCRIPTION = "subscription";
+
private static final String PROP_SUBS_GROUP_NAME = "subscriptionGroupName";
private static final String PROP_DETECTION_NAME = "detectionName";
@@ -200,6 +207,20 @@ public class YamlResource {
LOG.info("Created yaml detection onboarding task {} with taskId {}",
taskDTO, taskId);
}
+ private Response processBadRequestResponse(String type, String operation,
String payload, IllegalArgumentException e) {
+ Map<String, String> responseMessage = new HashMap<>();
+ LOG.warn("Validation error while {} {} with payload {}", operation, type,
payload, e);
+ responseMessage.put(type + "Msg", "Validation Error! " + e.getMessage());
+ return
Response.status(Response.Status.BAD_REQUEST).entity(responseMessage).build();
+ }
+
+ private Response processServerErrorResponse(String type, String operation,
String payload, Exception e) {
+ Map<String, String> responseMessage = new HashMap<>();
+ LOG.error("Error {} {} with payload {}", operation, type, payload, e);
+ responseMessage.put(type + "Msg", "Failed to create the " + type + ".
Reach out to the ThirdEye team.");
+ responseMessage.put(type + "Msg-moreInfo", "Error = " + e.getMessage());
+ return Response.serverError().entity(responseMessage).build();
+ }
@POST
@Path("/create-alert")
@@ -218,26 +239,21 @@ public class YamlResource {
yamls = OBJECT_MAPPER.readValue(payload, Map.class);
Preconditions.checkArgument(StringUtils.isNotBlank(payload), "The Yaml
Payload in the request is empty.");
- Preconditions.checkArgument(yamls.containsKey("detection"), "Detection
pipeline yaml is missing");
+ Preconditions.checkArgument(yamls.containsKey(PROP_DETECTION),
"Detection pipeline yaml is missing");
- detectionConfigId = createDetectionPipeline(yamls.get("detection"),
startTime, endTime);
+ detectionConfigId = createDetectionPipeline(yamls.get(PROP_DETECTION),
startTime, endTime);
} catch (IllegalArgumentException e) {
- LOG.warn("Validation error while creating detection pipeline with
payload " + payload, e);
- responseMessage.put("detectionMsg", "Validation Error! " +
e.getMessage());
- return
Response.status(Response.Status.BAD_REQUEST).entity(responseMessage).build();
+ return processBadRequestResponse(PROP_DETECTION,
YamlOperations.CREATING.name(), payload, e);
} catch (Exception e) {
- LOG.error("Error creating detection pipeline with payload " + payload,
e);
- responseMessage.put("detectionMsg", "Failed to create the detection
pipeline. Reach out to the ThirdEye team.");
- responseMessage.put("detectionMsg-moreInfo", "Error = " +
e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processServerErrorResponse(PROP_DETECTION,
YamlOperations.CREATING.name(), payload, e);
}
// Notification
long detectionAlertConfigId;
try {
- Preconditions.checkArgument(yamls.containsKey("subscription"),
"Subscription group yaml is missing.");
+ Preconditions.checkArgument(yamls.containsKey(PROP_SUBSCRIPTION),
"Subscription group yaml is missing.");
- String subscriptionYaml = yamls.get("subscription");
+ String subscriptionYaml = yamls.get(PROP_SUBSCRIPTION);
Map<String, Object> subscriptionYamlConfig;
try {
subscriptionYamlConfig =
ConfigUtils.getMap(this.yaml.load(subscriptionYaml));
@@ -255,16 +271,11 @@ public class YamlResource {
detectionAlertConfigId = createSubscriptionGroup(subscriptionYaml);
}
} catch (IllegalArgumentException e) {
- LOG.warn("Validation error while creating subscription group with
payload " + payload, e);
this.detectionConfigDAO.deleteById(detectionConfigId);
- responseMessage.put("subscriptionMsg", "Validation Error! " +
e.getMessage());
- return
Response.status(Response.Status.BAD_REQUEST).entity(responseMessage).build();
+ return processBadRequestResponse(PROP_SUBSCRIPTION,
YamlOperations.CREATING.name(), payload, e);
} catch (Exception e) {
- LOG.error("Error creating subscription group with payload " + payload,
e);
this.detectionConfigDAO.deleteById(detectionConfigId);
- responseMessage.put("subscriptionMsg", "Failed to create the
subscription group. Reach out to the ThirdEye team.");
- responseMessage.put("subscriptionMsg-moreInfo", "Error = " +
e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processServerErrorResponse(PROP_DETECTION,
YamlOperations.CREATING.name(), payload, e);
}
// create an yaml onboarding task to run replay and tuning
@@ -323,19 +334,14 @@ public class YamlResource {
try {
detectionConfigId = createDetectionPipeline(payload, startTime, endTime);
} catch (IllegalArgumentException e) {
- LOG.warn("Validation error while creating detection pipeline with
payload " + payload, e);
- responseMessage.put("message", "Validation Error! " + e.getMessage());
- return
Response.status(Response.Status.BAD_REQUEST).entity(responseMessage).build();
+ return processBadRequestResponse(PROP_DETECTION,
YamlOperations.CREATING.name(), payload, e);
} catch (Exception e) {
- LOG.error("Error creating detection pipeline with payload " + payload,
e);
- responseMessage.put("message", "Failed to create the detection pipeline.
Reach out to the ThirdEye team.");
- responseMessage.put("more-info", "Error = " + e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processServerErrorResponse(PROP_DETECTION,
YamlOperations.CREATING.name(), payload, e);
}
- LOG.info("Detection Pipeline created with id " + detectionConfigId + "
using payload " + payload);
- responseMessage.put("message", "Alert was created successfully.");
- responseMessage.put("more-info", "Record saved with id " +
detectionConfigId);
+ LOG.info("Detection created with id " + detectionConfigId + " using
payload " + payload);
+ responseMessage.put("detectionMsg", "Alert was created successfully.");
+ responseMessage.put("detectionMsg-moreInfo", "Record saved with id " +
detectionConfigId);
return Response.ok().entity(responseMessage).build();
}
@@ -391,18 +397,13 @@ public class YamlResource {
try {
updateDetectionPipeline(id, payload, startTime, endTime);
} catch (IllegalArgumentException e) {
- LOG.warn("Validation error while creating detection pipeline with
payload " + payload, e);
- responseMessage.put("message", "Validation Error! " + e.getMessage());
- return
Response.status(Response.Status.BAD_REQUEST).entity(responseMessage).build();
+ return processBadRequestResponse(PROP_DETECTION,
YamlOperations.UPDATING.name(), payload, e);
} catch (Exception e) {
- LOG.error("Error creating detection pipeline with payload " + payload,
e);
- responseMessage.put("message", "Failed to create the subscription group.
Reach out to the ThirdEye team.");
- responseMessage.put("more-info", "Error = " + e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processServerErrorResponse(PROP_DETECTION,
YamlOperations.UPDATING.name(), payload, e);
}
- LOG.info("Detection Pipeline " + id + " updated successfully");
- responseMessage.put("message", "The detection Pipeline was created
successfully.");
+ LOG.info("Detection with id " + id + " updated");
+ responseMessage.put("message", "Alert was updated successfully.");
responseMessage.put("detectionConfigId", String.valueOf(id));
return Response.ok().entity(responseMessage).build();
}
@@ -456,17 +457,12 @@ public class YamlResource {
try {
detectionConfigId = createOrUpdateDetectionPipeline(payload);
} catch (IllegalArgumentException e) {
- LOG.warn("Validation error while creating/updating detection pipeline
with payload " + payload, e);
- responseMessage.put("message", "Validation Error! " + e.getMessage());
- return
Response.status(Response.Status.BAD_REQUEST).entity(responseMessage).build();
+ return processBadRequestResponse(PROP_DETECTION,
YamlOperations.CREATING.name() + "/" + YamlOperations.UPDATING.name(), payload,
e);
} catch (Exception e) {
- LOG.error("Error creating/updating detection pipeline with payload " +
payload, e);
- responseMessage.put("message", "Failed to create the detection pipeline.
Reach out to the ThirdEye team.");
- responseMessage.put("more-info", "Error = " + e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processServerErrorResponse(PROP_DETECTION,
YamlOperations.CREATING.name() + "/" + YamlOperations.UPDATING.name(), payload,
e);
}
- LOG.info("Detection Pipeline created/updated id " + detectionConfigId + "
using payload " + payload);
+ LOG.info("Detection Pipeline created/updated with id " + detectionConfigId
+ " using payload " + payload);
responseMessage.put("message", "The alert was created/updated
successfully.");
responseMessage.put("more-info", "Record saved/updated with id " +
detectionConfigId);
return Response.ok().entity(responseMessage).build();
@@ -501,23 +497,18 @@ public class YamlResource {
@ApiOperation("Create a subscription group using a YAML config")
@SuppressWarnings("unchecked")
public Response createSubscriptionGroupApi(
- @ApiParam("payload") String yamlAlertConfig) {
+ @ApiParam("payload") String payload) {
Map<String, String> responseMessage = new HashMap<>();
long detectionAlertConfigId;
try {
- detectionAlertConfigId = createSubscriptionGroup(yamlAlertConfig);
+ detectionAlertConfigId = createSubscriptionGroup(payload);
} catch (IllegalArgumentException e) {
- LOG.warn("Validation error while creating subscription group with
payload " + yamlAlertConfig, e);
- responseMessage.put("message", "Validation Error! " + e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processBadRequestResponse(PROP_SUBSCRIPTION,
YamlOperations.CREATING.name(), payload, e);
} catch (Exception e) {
- LOG.error("Error creating subscription group with payload " +
yamlAlertConfig, e);
- responseMessage.put("message", "Failed to create the subscription group.
Reach out to the ThirdEye team.");
- responseMessage.put("more-info", "Error = " + e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processServerErrorResponse(PROP_SUBSCRIPTION,
YamlOperations.CREATING.name(), payload, e);
}
- LOG.info("Notification group created with id " + detectionAlertConfigId +
" using payload " + yamlAlertConfig);
+ LOG.info("Notification group created with id " + detectionAlertConfigId +
" using payload " + payload);
responseMessage.put("message", "The subscription group was created
successfully.");
responseMessage.put("detectionAlertConfigId",
String.valueOf(detectionAlertConfigId));
return Response.ok().entity(responseMessage).build();
@@ -588,24 +579,19 @@ public class YamlResource {
@Consumes(MediaType.TEXT_PLAIN)
@ApiOperation("Edit a subscription group using a YAML config")
public Response updateSubscriptionGroupApi(
- @ApiParam("payload") String yamlAlertConfig,
+ @ApiParam("payload") String payload,
@ApiParam("the detection alert config id to edit") @PathParam("id") long
id) {
Map<String, String> responseMessage = new HashMap<>();
try {
- updateSubscriptionGroup(id, yamlAlertConfig);
+ updateSubscriptionGroup(id, payload);
} catch (IllegalArgumentException e) {
- LOG.warn("Validation error while updating subscription group " + id + "
with payload " + yamlAlertConfig, e);
- responseMessage.put("message", "Validation Error! " + e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processBadRequestResponse(PROP_SUBSCRIPTION,
YamlOperations.UPDATING.name(), payload, e);
} catch (Exception e) {
- LOG.error("Error updating subscription group " + id + " with payload " +
yamlAlertConfig, e);
- responseMessage.put("message", "Failed to update the subscription group.
Reach out to the ThirdEye team.");
- responseMessage.put("more-info", "Error = " + e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processServerErrorResponse(PROP_SUBSCRIPTION,
YamlOperations.UPDATING.name(), payload, e);
}
- LOG.info("Notification group " + id + " updated successfully");
- responseMessage.put("message", "The YAML alert config was updated
successfully.");
+ LOG.info("Subscription group with id " + id + " updated");
+ responseMessage.put("message", "The subscription group was updated
successfully.");
responseMessage.put("detectionAlertConfigId", String.valueOf(id));
return Response.ok().entity(responseMessage).build();
}
@@ -662,9 +648,7 @@ public class YamlResource {
result = pipeline.run();
} catch (IllegalArgumentException e) {
- LOG.warn("Validation error while running preview with payload " +
payload, e);
- responseMessage.put("message", "Validation Error! " + e.getMessage());
- return Response.serverError().entity(responseMessage).build();
+ return processBadRequestResponse(YamlOperations.PREVIEW.name(),
YamlOperations.RUNNING.name(), payload, e);
} catch (InvocationTargetException e) {
responseMessage.put("message", "Failed to run the preview due to " +
e.getTargetException().getMessage());
return Response.serverError().entity(responseMessage).build();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]