zhangshenghang opened a new pull request, #12941:
URL: https://github.com/apache/seatunnel/pull/12941

   Yes, I am contributing to Apache SeaTunnel.
   
   ## What documentation issues were found
   
   While auditing connector, transform and common-options documentation against 
the actual Java source code (option definitions, factory `optionRule()`s, type 
mappers and option-consumption code), I found the following real inaccuracies:
   
   1. **Pulsar source (en + zh)** — The FAQ claimed only `EARLIEST`/`LATEST` 
startup modes are supported, contradicting the option table and 
`PulsarSourceOptions.StartMode` (`EARLIEST`, `LATEST`, `SUBSCRIPTION`, 
`TIMESTAMP`). It also claimed consumers join with configurable subscription 
types (e.g. `Failover`/`Exclusive`), but no such option exists — 
`PulsarConfigUtil.createConsumerBuilder` only sets the subscription name.
   
   2. **Kudu source & sink type mapping (en + zh)** — Source table claimed 
`INT8/INT16/INT32 → INT`; `KuduTypeMapper` actually maps `INT8 → TINYINT`, 
`INT16 → SMALLINT`, `INT32 → INT`. Sink table claimed `INT → INT8/INT16/INT32`; 
`KuduRowSerializer` passes values through unchanged, so the Kudu client's exact 
boxed types mean `TINYINT → INT8`, `SMALLINT → INT16`, `INT → INT32`.
   
   3. **Splunk source (en + zh)** — `params` was marked required, but 
`SplunkSourceFactory.optionRule()` lists it as optional and 
`SplunkSourceParameter` never validates it. Also documented that `output_mode` 
defaults to `json` (set via `putIfAbsent`).
   
   4. **Prometheus sink (en + zh)** — `retry` was documented with default `3`; 
the option is defined with `noDefaultValue()` and the effective default is `0` 
(retries disabled).
   
   5. **Fluss sink (zh only)** — The zh "replicate CDC across databases" 
section claimed `${schema_name}` resolves to the upstream database in a 
Fluss-to-Fluss topology and used `database = "sink_db_${schema_name}"`. Fluss 
identifiers carry no schema (`TableIdentifier.of(..., database, null, table)`), 
so `${schema_name}` resolves to an empty string; the section now matches the 
already-correct en page and uses `${database_name}`.
   
   6. **Sink common options (en + zh)** — `plugin_input` was documented as 
`String`, but `ConnectorCommonOptions.PLUGIN_INPUT` is a `listType()` option; a 
single name or an array is accepted and multiple names are unioned by the Zeta 
sink parser. The en-only "Important note" claimed a nonexistent `plugin_input` 
→ `plugin_output` requirement (and contradicted the correct closing note), and 
the examples used the invalid plugin name `FakeSourceStream` plus a nonexistent 
`field_name` option.
   
   7. **Source common options (en + zh)** — Same invalid `FakeSourceStream` 
plugin name, and the same false "must set plugin_input" note (a source never 
takes `plugin_input`).
   
   8. **Sink write modes (en + zh)** — The file-connector save-mode support 
table missed `GcsFile` (its factory exposes 
`schema_save_mode`/`data_save_mode`) and `OssJindoFile` (does not expose them); 
the troubleshooting section also omitted `SmbFile` and `GcsFile` from the 
supported list. All entries re-verified against each `*SinkFactory`.
   
   9. **LLM transform (en + zh)** — `api_key` was marked unconditionally 
required, but `LLMTransformFactory` makes it conditionally required 
(`OPENAI`/`DOUBAO`/`MICROSOFT`) and unused for `CUSTOM`, matching the page's 
own CUSTOM note.
   
   I also evaluated adding the shared `process_batch_size` / `model_retry_*` / 
`model_request_timeout_ms` options to the LLM/Embedding pages, but verified in 
`LLMTransform`/`EmbeddingTransform` runtime code that these are not consumed by 
those transforms (LLM infers row-by-row; embedding batches via 
`single_vectorized_input_number`), so documenting them would be misleading and 
they were intentionally left out.
   
   ## What was changed
   
   Only documentation corrections — no code changes. Every fix was verified 
against the corresponding source file before editing.
   
   ## Files updated (19 files, en + zh kept in sync)
   
   - `docs/{en,zh}/connectors/source/Pulsar.md`
   - `docs/{en,zh}/connectors/source/Kudu.md`, 
`docs/{en,zh}/connectors/sink/Kudu.md`
   - `docs/{en,zh}/connectors/source/Splunk.md`
   - `docs/{en,zh}/connectors/sink/Prometheus.md`
   - `docs/zh/connectors/sink/Fluss.md`
   - `docs/{en,zh}/transforms/llm.md`
   - `docs/{en,zh}/connectors/common-options/source-common-options.md`
   - `docs/{en,zh}/connectors/common-options/sink-common-options.md`
   - `docs/{en,zh}/connectors/common-options/sink-write-modes.md`
   
   ## Were English and Chinese docs both checked?
   
   Yes. Every issue was checked in both locales and fixed in both where 
present. The Fluss `${schema_name}` issue existed only in the zh page (en was 
already correct), and the false sink-common-options "Important note" existed 
only in en (zh has no such note); both were handled accordingly.
   
   ## Duplicate PR check (last 7 days)
   
   I checked open PRs from the last 7 days by author and community before 
starting: #12932 (Zeta REST/engine/transforms/FAQ), #12911 
(Kafka/Hive/Jdbc/ClickHouse/Doris/StarRocks/MongoDB/TDengine/…), #12865 
(DynamoDB/Elasticsearch/Http/JDBC dialects/…), #12813 
(Sls/Snowflake/Redis/CDC/…), #12771 (CDC/InfluxDB/S3/Gcs/Feishu/…), #12730 
(file sinks/Iceberg source/LocalFile/…) and community PRs #12859, #12856. None 
of them touches Pulsar, Kudu, Splunk, Prometheus, Fluss sink, llm transform, or 
the common-options / sink-write-modes pages edited here, so this PR does not 
overlap with them.
   
   ## Verification
   
   - Re-verified every documented value against the source (option definitions, 
factory option rules, `KuduTypeMapper`, `KuduRowSerializer`, 
`SplunkSourceParameter`, `SubscriptionStartCursor`, `GcsFileSinkFactory`, etc.) 
before editing.
   - Ran the CI-equivalent `[email protected] -c .dlc.json` on all 19 
changed files: 0 failures.
   - Validated markdown table column consistency across all changed tables and 
that all relative links resolve locally.
   - `./mvnw spotless` was not run because this PR contains no Java changes 
(spotless is configured for Java only).


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