You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found during the investigation for #1710, where it is documented as explicitly out of scope.
Current Behavior
IBEISIA.iaCheckMissing (src/main/java/org/ecocean/identity/IBEISIA.java:790) is the only in-request self-heal when WBIA answers an identify/add call with code 600 "Missing image and/or annotation UUIDs". It is dead code in both branches:
Image branch (IBEISIA.java:798-808): a literal no-op. It iterates missing_image_uuid_list and prints **** FAKE ATTEMPT to sendMediaAssets: uuid=... with the comment // TODO: actually send the mediaasset duh. No media asset is ever sent.
Annotation branch (IBEISIA.java:809-832): calls __sendAnnotations(anns, context, myShepherd) but never assigns the result — JSONObject srtn = null; stays null, so the success check if ((srtn != null) && ...) tryAgain = true; can never fire.
Since both branches leave tryAgain == false, every caller (IBEISIA.java:221 inside __sendAnnotations itself, and IBEISIA.java:951 in the identify flow) concludes there is nothing to retry. An identification job hit by a 600 therefore burns all of its requeues without WBIA ever receiving the missing objects.
Expected Behavior
On a 600, the missing media assets and annotations should actually be re-sent to WBIA, the response should be checked for success, and the identify should be retried when the re-send worked — with a bound on retry attempts so a persistent failure cannot loop.
Notes
feat(ia): WBIA annotation reconciliation sweep #1710's reconciliation sweep makes the next identify succeed by healing registration in the background; it does not rescue an in-flight job. This issue is about the in-flight path.
The method carries // TODO: Evaluate, deprecate fully and remove — an acceptable alternative resolution is to delete iaCheckMissing outright and rely on the sweep plus proper retry semantics, rather than fixing the branch bodies. Either way, the current state (a self-heal that silently does nothing) should not survive.
Found during the investigation for #1710, where it is documented as explicitly out of scope.
Current Behavior
IBEISIA.iaCheckMissing(src/main/java/org/ecocean/identity/IBEISIA.java:790) is the only in-request self-heal when WBIA answers an identify/add call withcode 600 "Missing image and/or annotation UUIDs". It is dead code in both branches:IBEISIA.java:798-808): a literal no-op. It iteratesmissing_image_uuid_listand prints**** FAKE ATTEMPT to sendMediaAssets: uuid=...with the comment// TODO: actually send the mediaasset duh. No media asset is ever sent.IBEISIA.java:809-832): calls__sendAnnotations(anns, context, myShepherd)but never assigns the result —JSONObject srtn = null;stays null, so the success checkif ((srtn != null) && ...) tryAgain = true;can never fire.Since both branches leave
tryAgain == false, every caller (IBEISIA.java:221inside__sendAnnotationsitself, andIBEISIA.java:951in the identify flow) concludes there is nothing to retry. An identification job hit by a 600 therefore burns all of its requeues without WBIA ever receiving the missing objects.Expected Behavior
On a 600, the missing media assets and annotations should actually be re-sent to WBIA, the response should be checked for success, and the identify should be retried when the re-send worked — with a bound on retry attempts so a persistent failure cannot loop.
Notes
// TODO: Evaluate, deprecate fully and remove— an acceptable alternative resolution is to deleteiaCheckMissingoutright and rely on the sweep plus proper retry semantics, rather than fixing the branch bodies. Either way, the current state (a self-heal that silently does nothing) should not survive.