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

   Thanks for the deep pass, @SEZ9 — this is a thorough review and I 
re-verified every one of your eight findings against the current head 
(`e5465cd9b3`, unchanged since your review) before replying, rather than taking 
the list at face value. Two of them are real and worth picking up; the other 
six I don't think should block merge, for concrete reasons below. Sorry for the 
length, but given this touches my own approval I want to show the actual 
evidence rather than just assert a conclusion.
   
   **Confirmed, worth picking up (non-blocking, good follow-ups):**
   - **Issue 5** (redact `client_secret` by default): agreed, this is a good 
hardening suggestion. The connector doesn't currently strip it, and the docs 
already flag the risk without acting on it. Worth an `omit_client_secret` 
option as you suggest, though I'd treat it as a follow-up rather than a merge 
blocker since it's a data-hygiene improvement on top of already-documented 
behavior, not a defect that breaks the stated V1 scope.
   - **Issue 8** (`${STRIPE_SECRET_KEY}` doc note): agreed, a one-line note on 
`-i` variable substitution would save users a confusing HOCON parse error. 
Cheap, worth doing.
   
   **Rechecked and I don't think these hold up as stated:**
   
   - **Issue 4 (Serializable)**: this one's already fixed by the code as 
written — `StripeSourceParameter extends HttpParameter` 
(`StripeSourceParameter.java:31`), and `HttpParameter implements Serializable` 
(`connector-http-base/.../HttpParameter.java:29`). The suggested fix ("make 
`StripeSourceParameter` extend `HttpParameter`, already Serializable") 
describes something that's already true in the current source, so there's no 
`NotSerializableException` risk here.
   
   - **Issues 6 & 7 (`columnLength=0`, `nullable=false` on `content`)**: I 
checked this against the shared `HttpSource` base class rather than in 
isolation. `HttpSource.java:236-246` (the default schema every generic 
`connector-http-*` source falls back to) builds the *exact same* 
`PhysicalColumn.of("content", BasicType.STRING_TYPE, 0, false, null, ...)` — 
same length-0, same non-null. `StripeSource` isn't deviating from convention 
here, it's copying the established shared default byte-for-byte. If 
`0`/non-null is genuinely risky for auto-create sinks, that's a 
`connector-http-base`-wide question affecting every HTTP-family source using 
this fallback schema, not something specific to introduce or fix in this PR 
alone.
   
   - **Issue 3 (`getBoundedness()` NPE)**: same shape of finding — I checked 
`AirtableSource.getBoundedness()` (`AirtableSource.java:66-72`) and it has the 
identical no-null-check `jobContext.getJobMode()` idiom with the identical raw 
`UnsupportedOperationException`. More importantly, I traced the real call path: 
`MultipleTableJobConfigParser.java:428-429` calls `source.setJobContext(...)` 
immediately before `FactoryUtil.ensureJobModeMatch(...)` (which is what 
actually invokes `getBoundedness()` during job parsing) — so on the real Zeta 
submission path, `jobContext` is always set before `getBoundedness()` runs, and 
the NPE isn't reachable through normal use. It's a pre-existing, codebase-wide 
pattern shared by at least Airtable and Stripe, not a regression this PR 
introduces — I'd leave both the null-guard and the message-quality improvement 
as a shared-pattern cleanup rather than blocking this specific connector on it.
   
   - **Issue 1 (secret-key leak via logs/exceptions)**: I checked both layers. 
`StripeSourceReader.requestFailed()` (`:202-224`) builds its exception from 
`response.getContent()` (redacted for the secret key, then truncated to 1024 
chars) and `response.getCode()` only — it never touches headers. That redaction 
is exactly what commit `25cd9c149` ("Redact Stripe keys from API errors") added 
in response to earlier feedback. I also checked the shared 
`HttpClientProvider`'s own retry-failure logging 
(`connector-http-base/.../HttpClientProvider.java:104-115`) — it logs only the 
attempt number and the exception cause (typically an `IOException` like 
connection-reset), not headers or request params. I don't see an active leak 
path in the current code; masking the option at job-config-print time is a 
reasonable extra layer of defense, but the "doesn't include it in logs" claim 
in the docs does appear to hold today, not just in one test assertion.
   
   - **Issue 2 (`retry` has no default vs. `rate_limit_max_retries` defaulting 
to 3)**: `retry` (`HttpCommonOptions.RETRY`, `connector-http-base`) has no 
default for every HTTP-family connector, not just Stripe — it's shared 
base-module config. Defaulting it to a non-zero value specifically inside 
`StripeSourceOptions` would make Stripe's transport-retry behavior inconsistent 
with every sibling `connector-http-*` module rather than fixing a 
Stripe-specific gap. If the no-default is genuinely a footgun, that's worth 
raising as a `connector-http-base` policy change (affecting all HTTP connectors 
uniformly), not a one-off override in this PR.
   
   **Net**: my 2026-08-26 approval stands — the connector logic, tests, and 
docs are sound, and none of the re-checked items are defects introduced by this 
PR specifically. I'd ask @goutamadwant to pick up Issues 5 and 8 as good, cheap 
follow-ups (either in this PR or a fast follow-up), but I don't think 
1/2/3/4/6/7 should hold up merge given they're either already mitigated in the 
current code, already fixed by inheritance, or pre-existing shared-base-class 
conventions used by multiple already-merged sibling connectors.
   
   @SEZ9 — genuinely appreciate the rigor here, and Issues 5/8 are real 
improvements I'd missed. Let me know if you have counter-evidence on any of the 
other six that I've missed in this pass.


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