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]

Reply via email to