Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Docs]: Document finally cleanup behavior during durable suspension

Abierto Apto para principiantes
#645 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
1/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
88/100
Tipo de issue
Documentación
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java

Línea de trabajo

Comienza en docs/advanced/error-handling.md, en la sección “Handling SuspendExecutionException”, y revisa la solicitud de documentación compartida enlazada para entender el contexto. Documenta cómo se comporta finally durante la suspensión, explica dónde colocar de forma segura la limpieza y cómo se propagan las excepciones, e incluye el ejemplo de Java propuesto; la sección estará terminada cuando cubra tanto la suspensión normal como las rutas de limpieza terminales.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

documentation pkg:sdk

Issue

The Handling SuspendExecutionException section correctly explains that SuspendExecutionException extends Error, bypasses a normal catch (Exception e), and must never be swallowed.

It does not currently explain the related finally behavior: Java executes an active finally block while SuspendExecutionException unwinds the stack. As a result, resource cleanup placed in finally can run during a normal durable suspension rather than only when the overall durable execution succeeds or fails.

This applies to any operation that can suspend, including wait, waitForCondition, callbacks, invokes, retry delays, and suspension inside map or parallel branches.

For example, this pattern can terminate a resource immediately when the wait suspends:

try {
    var resource = ctx.step("launch-resource", Resource.class,
            stepCtx -> launchResource());
    var result = ctx.waitForCallback("work-complete", Result.class,
            (callbackId, stepCtx) -> dispatchWork(resource, callbackId));
    return result;
} finally {
    ctx.step("terminate-resource", Void.class,
            stepCtx -> terminateResource());
}

Page/Location

https://github.com/aws/aws-durable-execution-sdk-java/blob/main/docs/advanced/error-handling.md

Section: Handling SuspendExecutionException

Suggested Fix

Extend the section with guidance that:

  • finally executes when the internal suspension signal unwinds the handler stack.
  • Durable cleanup that must happen only on completion or actual failure should not be placed in finally around suspending operations.
  • Cleanup should run explicitly after successful completion and from handlers for application or operation exceptions.
  • SuspendExecutionException must continue to propagate untouched; avoid catch (Throwable) unless it immediately rethrows suspension and other control-flow errors appropriately.

Include a safe Java example such as:

try {
    var result = performDurableWorkThatMaySuspend(ctx);
    ctx.step("cleanup-resource", Void.class,
            stepCtx -> cleanupResource());
    return result;
} catch (Exception e) {
    ctx.step("cleanup-resource", Void.class,
            stepCtx -> cleanupResource());
    throw e;
}

The cleanup step occupies the same next durable-operation position on either terminal path, while SuspendExecutionException bypasses catch (Exception e) and suspends normally.

This is the Java-specific companion to the shared documentation request: https://github.com/aws/aws-durable-execution-docs/issues/131.

Lenguaje dominante
Java
Estrellas
28
Forks
13
Merge medio
2 d 8 h
PR fusionados (30 d)
40

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de aws/aws-durable-execution-sdk-java

Todos los issues de aws/aws-durable-execution-sdk-java

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.