hesam-oxe commented on PR #11077:
URL: https://github.com/apache/seatunnel/pull/11077#issuecomment-6129188275

   @DanielLeens @SEZ9 — pushed 69ed5ed addressing Issues 1-4 + F3/F7/F8. No 
redesign, all verifiable:
   
   **Issue 1 (incompatible-changes):** added breaking-change entry to 
`docs/en|zh/introduction/concepts/incompatible-changes.md` — shared-writer 
merge, fail-fast on layout mismatch, file-layout change, migration (own 
destination vs aligned layouts, no state migration needed).
   
   **Issue 2 (over/under-firing validation):** 
`MultiTableSink.validateSharedDestinationSchemas()` now compares 
`CatalogTable.getSeaTunnelRowType()` (field names + types) instead of full 
`TableSchema.equals`. Comments, lengths, scales, PKs, constraints no longer 
trip it. Existing tests `testSharedDestinationWithDivergentSchemasFailsFast` / 
`...CompatibleSchemasSharesOneWriter` still target exactly this (INT vs DOUBLE 
fails, identical layouts share).
   
   **Issue 3 (secret-in-logs):** both INFO paths (`createWriter` / 
`restoreWriter`) no longer log `getPhysicalDestinationIdentifier()` verbatim. 
New `logSafeDestinationId()` emits `destination-hash=...` / 
`destination-empty`. `SeaTunnelSink.getPhysicalDestinationIdentifier()` javadoc 
now says: fold distinctions in, prefer opaque hash for credential-adjacent 
parts, coordinator never logs verbatim.
   
   **Issue 4 (file identifier too narrow):** 
`BaseMultipleTableFileSink.getPhysicalDestinationIdentifier()` now folds `path 
+ fs(hdfsNameKey/bucket) + format + tmpPath + fileNameExpression + row-type + 
hash(sorted extraOptions)`. Same path+row-type but different 
bucket/endpoint/tmp/credentials no longer collide. Secrets distinguished via 
hash, not embedded verbatim.
   
   **F3:** documented in javadoc — shared writer is created from first alias 
instance and receives rows from all aliases; same identifier requires 
equivalent row layout + write settings + commit semantics; no-CatalogTable 
pairs are trusted and connector-owned.
   
   **F7:** verified — no `computeIfAbsent` wraps writer creation. 
`destinationWriters` uses manual get/put inside try/catch(IOException); only 
`SinkContextProxy` construction (non-throwing) uses `computeIfAbsent`.
   
   **F8:** `getDestinationKey` already carries @param/@return; kept.
   
   Verification: `spotless:apply` clean on touched modules. Full `mvn compile` 
blocked in this env by pre-existing `seatunnel-config-shade` + JDK17 (unrelated 
to diff — same failure on clean tree); changed files parse clean (only 
missing-symbol errors when compiled standalone, zero syntax errors). CI re-run 
requested; fork run will confirm.
   


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