From 6420270d06ba66d03546affd40a326ab62912c3b Mon Sep 17 00:00:00 2001 From: Jon Van Oast Date: Wed, 3 Jan 2024 12:21:10 -0700 Subject: [PATCH] theoretically start new queue job for an annot child subtask if it fails --- .../java/org/ecocean/servlet/IAGateway.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/ecocean/servlet/IAGateway.java b/src/main/java/org/ecocean/servlet/IAGateway.java index 85b3ef91de..b16239a4a4 100755 --- a/src/main/java/org/ecocean/servlet/IAGateway.java +++ b/src/main/java/org/ecocean/servlet/IAGateway.java @@ -422,8 +422,33 @@ public static JSONObject _doIdentify(JSONObject jin, JSONObject res, Shepherd my for (int i = 0 ; i < anns.size() ; i++) { Annotation ann = anns.get(i); JSONObject queryConfigDict = IBEISIA.queryConfigDict(myShepherd, opt); - JSONObject taskRes = _sendIdentificationTask(ann, context, baseUrl, queryConfigDict, null, limitTargetSize, subTasks.get(i),myShepherd,fastlane); + JSONObject taskRes = new JSONObject(); + Task subTask = subTasks.get(i); + try { + taskRes = _sendIdentificationTask(ann, context, baseUrl, queryConfigDict, null, limitTargetSize, subTask, myShepherd,fastlane); + } catch (Exception ex) { + System.out.println("subTask failure on " + subTask + ": " + ex.toString()); + taskRes.put("success", false); + taskRes.put("error", ex.toString()); +System.out.println(">>>>>>> parentTask: " + parentTask); +System.out.println(">>>>>>> parentTask params: " + parentTask.getParameters()); +System.out.println(">>>>>>> jin: " + jin); + JSONObject jobj = new JSONObject(); + jobj.put("identify", new JSONObject()); + jobj.getJSONObject("identify").put("annotationIds", new JSONArray()); + jobj.getJSONObject("identify").getJSONArray("annotationIds").put(ann.getId()); + jobj.put("taskId", subTask.getId()); + jobj.put("__baseUrl", baseUrl); + jobj.put("__context", context); + jobj.put("__queueActualRetries", jin.optInt("__queueActualRetries", 0)); + jobj.put("__queueRetries", jin.optInt("__queueRetries", 0)); + jobj.put("__queueStart", jin.optLong("__queueStart", System.currentTimeMillis())); + requeueJob(jobj, true); + } + taskRes.put("subTaskId", subTask.getId()); + taskRes.put("subTaskIndex", i); taskList.put(taskRes); + System.out.println("subTask[" + i + "] => " + taskRes.toString()); } if (limitTargetSize > -1) res.put("_limitTargetSize", limitTargetSize); res.put("tasks", taskList);