FailureDetails.IsCausedBy throws
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Comienza en FailureDetails.isCausedBy() y sigue cómo se serializa y reconstruye el tipo de error del fallo al acceder a él mediante retryContext. Usa el controlador de reintentos personalizado proporcionado y el escenario de excepción para reproducir el fallo. Se considera terminado cuando isCausedBy() puede evaluar correctamente la clase de la causa, con cobertura para el caso reproducido.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
When an activity function throws an exception, and it is caught by a custom retry handler in an orchestrator, the retryContext allows accessing the FailureDetails for analysis of the failure. However, attempting to use the FailureDetails.isCausedBy() method will never succeed, as it internally is implemented using Class.forName() which requires the fully-qualified exception class name but FailureDetails does not have this information serialized, just the simple exception class name.
Repro:
@FunctionName("CustomRetryActivityFunction")
public String customRetryActivityFunction(
@DurableOrchestrationTrigger(name = "ctx") TaskOrchestrationContext ctx) {
TaskOptions options = new TaskOptions(retryContext -> {
FailureDetails lastFailure = retryContext.getLastFailure();
if (lastFailure != null
&& lastFailure.getErrorType().equals("OverflowException")
// This line should work, but doesn't
// && lastFailure.isCausedBy(InvalidOperationException.class)
&& retryContext.getLastAttemptNumber() < 3) {
return true;
}
return false;
});
return ctx.callActivity("RaiseComplexException", ctx.getInstanceId(), options, String.class).await();
}
``
- Lenguaje dominante
- Java
- Estrellas
- 29
- Forks
- 18
- Merge medio
- 1 d 10 h
- PR fusionados (30 d)
- 2
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/durabletask-java
-
Needs: Triage :mag:
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
microsoft/durabletask-java#303 ·
-
RetryContext.lastAttemptNumber is inflated when retriable task is awaited via ctx.anyOf(...) AbiertoNeeds: Triage :mag:
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
microsoft/durabletask-java#290 · 2 comentarios ·
-
Needs: Triage :mag:
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
microsoft/durabletask-java#285 ·
-
Needs: Triage :mag:
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
microsoft/durabletask-java#276 ·
-
Enhancement
microsoft/durabletask-java#274 · 1 reacción · 2 asignados ·
Todos los issues de microsoft/durabletask-java
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Card-Forge/forge#11998 ·