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]
