Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Docs]: Document finally cleanup behavior during durable suspension

Đang mở Phù hợp với người mới
#645 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
1/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
88/100
Loại issue
Tài liệu
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
java
Lĩnh vực
documentation

Hướng nghiên cứu

Bắt đầu trong docs/advanced/error-handling.md tại phần “Handling SuspendExecutionException” và xem lại yêu cầu tài liệu dùng chung được liên kết để nắm bối cảnh. Ghi lại cách finally hoạt động trong khi tạm dừng, giải thích vị trí đặt thao tác dọn dẹp an toàn và cách ngoại lệ được truyền đi, đồng thời đưa vào ví dụ Java được đề xuất; phần này hoàn tất khi bao quát cả trạng thái tạm dừng bình thường và các đường dẫn dọn dẹp khi kết thúc.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Java
Star
28
Fork
13
Merge trung bình
2 ngày 8 giờ
Pull request đã merge (30 ngày)
40

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của aws/aws-durable-execution-sdk-java

Tất cả issue của aws/aws-durable-execution-sdk-java

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.