zhangshenghang commented on PR #11554: URL: https://github.com/apache/seatunnel/pull/11554#issuecomment-5862739710
Thanks @DanielLeens for the thorough carry-forward re-read — all three gate items are addressed in 2a43440df6 (on top of a fresh `upstream/dev` merge). - **Issue 1 (`disconnect()` in the `finally`)**: upstream #11695 has since rewritten `disconnect()` into the lenient form (early-return when disconnected, logout failures only logged), so it no longer throws `FTPException` — or any checked exception — at all. In fact the old `catch (IOException e)` around it no longer compiles against that change, which the merge exposed. The `finally` now calls `disconnect(client)` directly with a comment noting it can never mask `closeException`. The original failure mode you traced (a masked close error on the not-connected path) is structurally gone. - **Issue 2 (at-least-once after abort)**: the `appendData` field Javadoc and the `appendFile` marker-mechanism Javadoc now state the narrower guarantee explicitly — retries are idempotent only when replaying the same aggregated commit info; once `abort()` deletes the transaction directory and its markers, a later commit re-appends and the mode is at-least-once, not exactly-once. - **Issue 6 + Issue 2 docs half**: the `data_save_mode` APPEND_DATA bullet in `docs/en/connectors/sink/FtpFile.md` and `docs/zh` now also requires a stable target filename across commits (`custom_filename = true` with a `file_name_expression` that does not vary per transaction — with the default expression each checkpoint writes a new file and there is nothing to append to), and warns that rows of a commit interrupted by an aborted checkpoint can appear twice. Verified locally: `connector-file-ftp` module tests 16/16 green (`SeaTunnelFileSystemTest` incl. append coverage); `connector-file-base` tests pass except 12 pre-existing local snappy-native-library errors in `AbstractReadStrategyTest` (environment-only, unrelated to this change — they fail identically without it). Issue 3 (marker-state unit tests) is still open as the agreed non-blocking follow-up; I can take it in a follow-up commit before draft exit if you prefer it in the same PR. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
