DanielLeens commented on PR #10306:
URL: https://github.com/apache/seatunnel/pull/10306#issuecomment-5229130380

   Thanks @SEZ9 for double-checking @nzw921rx's findings. I want to flag 
something important before we act on this: both blockers you just confirmed 
were checked against head `2a56e4fdb` (nzw921rx's review head from 2026-07-29), 
but the PR has moved well past that point since then — the current head is 
`08af4675b78a6f5b9ba3ba75efbc40476bc7748f`, unchanged since my last review on 
2026-08-07T07:01:24Z. I independently re-verified both items directly against 
the current head, not the one you cited:
   
   **On #1 (auto_commit=false silent data loss):** This exact class of bug is 
real on `2a56e4fdb`, but it's already fixed. I traced it live across my 
2026-08-03/08-06 review rounds: the original relaxation (`autoCommit && 
autoFlushed` → `autoFlushed`) that let `reportAndClearPendingRowsIfCommitted()` 
clear/report rows before a real commit was replaced with a savepoint-based 
boundary. On the current head, `JdbcSinkWriter.java:376-410` 
(`markSuccessfulAutoFlushBoundaryIfNeeded()` / `lastSuccessfulBatchSavepoint`) 
marks a savepoint instead of committing on auto-flush, and `rollbackIfNeeded()` 
(`JdbcSinkWriter.java:487-506`) now rolls back **to that savepoint**, not the 
whole transaction, when a later batch hits a row-level failure. So A1/A2 in 
your scenario are never forgotten — they stay live in the still-open 
transaction and get committed for real at `prepareCommit(checkpointId)`, 
exactly aligned with the checkpoint boundary. I pulled the current file content 
directly from the API
  to confirm this code is present today, not just in an old review.
   
   **On #2 (SQL query-level failures classified as row errors):** Also already 
fixed, and I can show you the exact diff. At `2a56e4fdb` (the head you 
reviewed), `SQLTransform.classifyRowError()` did unconditionally map every 
`WHERE_STATEMENT_ERROR` to `ROW_ERROR` — I pulled that historical file content 
and confirmed it. On the current head, `SQLTransform.java:122-137` now does:
   ```java
   if (transformException.getSeaTunnelErrorCode()
                   == TransformCommonErrorCode.WHERE_STATEMENT_ERROR
           && !hasUnsupportedOperationCause(transformException)) {
       return RowErrorClassification.ROW_ERROR;
   }
   return RowErrorClassification.SYSTEM_ERROR;
   ```
   `hasUnsupportedOperationCause()` walks the cause chain for 
`CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION` and, if found, the classifier 
now returns `SYSTEM_ERROR` instead — so an unsupported query expression like 
`BETWEEN` no longer gets silently routed/dropped as a row error. There's also a 
dedicated regression test, `SQLTransformTest#testClassifyRowError`, that 
reproduces your exact `"id BETWEEN 1 AND 5"` example with an 
`UNSUPPORTED_OPERATION`-coded cause and asserts `SYSTEM_ERROR`. This is 
precisely the test nzw921rx asked for.
   
   So: no new blocker here from my side, but a process note — both items are 
already resolved on the current, unchanged head. As I posted in my full 
re-review on 2026-08-07 (`08af4675b`), I found no outstanding source-level 
correctness blocker on this PR after the eviction-detection fix landed; the 
only remaining gates are (1) a green `Build` run on this exact head with the 
three previously-unexplained connector-IT failures resolved or explained, since 
the current head has never actually been through CI, and (2) the required 
maintainer approval. Could you re-run your check against `08af4675b` directly 
rather than the `2a56e4fdb` snapshot? I don't want us to re-litigate fixed 
issues and stall the CI/approval step that's actually still open.


-- 
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