FailureDetails.IsCausedBy throws
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 48/100
Rechercherichtung
Beginne bei FailureDetails.isCausedBy() und verfolge, wie der Fehlertyp der Failure serialisiert und rekonstruiert wird, wenn über retryContext darauf zugegriffen wird. Verwende den bereitgestellten benutzerdefinierten Retry-Handler und das Exception-Szenario, um den Fehler zu reproduzieren. Als abgeschlossen gilt die Aufgabe, wenn isCausedBy() die Klasse der Ursache erfolgreich auswerten kann und der reproduzierte Fall durch Tests abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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();
}
``
- Vorherrschende Sprache
- Java
- Sterne
- 29
- Forks
- 18
- Ø Merge
- 1 T. 10 Std.
- Gemergte PRs (30 T.)
- 2
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microsoft/durabletask-java
-
Needs: Triage :mag:
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
microsoft/durabletask-java#303 ·
-
Needs: Triage :mag:
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
microsoft/durabletask-java#290 · 2 Kommentare ·
-
Needs: Triage :mag:
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
microsoft/durabletask-java#285 ·
-
Needs: Triage :mag:
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
microsoft/durabletask-java#276 ·
-
Enhancement
microsoft/durabletask-java#274 · 1 Reaktion · 2 zugewiesene Personen ·
Alle Issues in microsoft/durabletask-java
Ähnliche Issues
-
certification
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 80/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Offenbug ecr
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Needs: Triage Type: Feature request
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
github/copilot-sdk#2760 ·