SeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.
# LLM Context Guide for Apache SeaTunnel
This guide helps AI assistants (LLMs / Agents) make **safe, consistent, and verifiable** changes to the Apache SeaTunnel codebase. It mirrors practices from mature Apache projects and adapts them to SeaTunnelβs **build, testing, architecture, and documentation conventions**.
## β οΈ CRITICAL: Validate Before Proposing Changes
**Agents MUST run verification commands locally before suggesting or finalizing changes.**
```bash
# Format code (mandatory)
./mvnw spotless:apply
# Quick verification (mandatory)
./mvnw -q -DskipTests verify
# Unit tests (strongly recommended)
./mvnw test
```
Failure to meet these requirements will likely result in PR rejection.
## Git Commit Message Convention
SeaTunnel follows a **strict commit message format** to maintain a clean and searchable history.
**Format**:
```
[Type][Module] Description
```
### Types
* `Feature` β New features
* `Fix` β Bug fixes
* `Improve` β Improvements to existing behavior
* `Docs` β Documentation-only changes
* `Test` β Test cases or test framework changes
* `Chore` β Build, dependency, or maintenance tasks
### Modules
* `Connector-V2` β seatunnel-connectors-v2
* `Zeta` β seatunnel-engine (Zeta engine)
* `Core` β seatunnel-core
* `API` β seatunnel-api
* `Transform-V2` β seatunnel-transforms-v2
* `Format` β seatunnel-formats
* `Translation` β seatunnel-translation
* `E2E` β seatunnel-e2e
### Examples
* `[Fix][Connector-V2] Fix MySQL source split enumeration bug`
* `[Fix][Zeta] Fix checkpoint timeout under heavy backpressure`
* `[Feature][Transform-V2] Add LLM transform plugin`
* `[Improve][Core] Optimize jar package loading speed`
* `[Docs] Update quick start guide`
## Repository Structure
```text
seatunnel/
βββ seatunnel-api/ # Core API definitions
βββ seatunnel-connectors-v2/ # Source & Sink connectors (main contribution area)
βββ seatunnel-transforms-v2/ # Transform plugins (including LLM)
βββ seatunnel-engine/ # Zeta engine & Web UI
βββ seatunnel-core/ # Job submission & CLI entry points
βββ seatunnel-translation/ # Flink & Spark adapters
βββ seatunnel-formats/ # Data formats (JSON, Avro, etc.)
βββ seatunnel-e2e/ # End-to-End integration tests
βββ docs/ # Documentation (en & zh)
βββ config/ # Default configurations
```
## Code Standards
### Java Backend
* **Formatting**: Google Java Format (AOSP style), enforced by Spotless
* **Imports**:
* No wildcard imports
* Use shaded dependencies: `org.apache.seatunnel.shade.*`
* **Nullability**: Avoid implicit null assumptions
* **Visibility**: Keep APIs minimal; prefer package-private when possible
* **Comments**: Add comments for important methods (public APIs, complex logic). Important methods include public APIs, lifecycle hooks (initialization, start/stop, checkpoint), and complex or performance-critical logic. Example:
```java
/**
* Enumerates source splits for parallel reading.
* Called once during job initialization.
*
* @param context Split enumeration context
* @return Collection of discovered splits
*/
@Override
public List<SourceSplit> enumerateSplits(SplitEnumerationContext context) {
// Implementation
}
```
### Apache License Header (MANDATORY)
All **new files** MUST include the ASF license header:
```java
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
```
## π¨ Backward Compatibility (VERY IMPORTANT)
Agents MUST treat backward compatibility as a **hard constraint**.
* DO NOT remove or rename existing config options
* DO NOT change default values casually
* DO NOT break public APIs or SPI contracts
Any incompatible change MUST:
* Be explicitly documented
* Be documented in `docs/en/introduction/concepts/incompatible-changes.md`
* Include migration guidance
* Be clearly explained in the PR description
## Dependency Rules
* DO NOT introduce new dependencies unless absolutely necessary
* Prefer existing shaded dependencies under `org.apache.seatunnel.shade.*`
* Any new dependency MUST:
* Be justified in the PR description
* Consider shading, size, and conflict risks
## Architecture Guidelines
### Connector (V2)
* Implement `SeaTunnelSource` or `SeaTunnelSink`
* Define configs using `Option`
* Support parallelism via `SourceSplitEnumerator`
* Avoid connector-specific logic leaking into engine or core
### Zeta Engine
* **Client**: Submits job config
* **Master**: Schedules & coordinates
* **Worker**: Executes tasks (Source β Transform β Sink)
Respect task boundaries and lifecycle semantics.
## Configuration (Option) Rules
* All user-facing configs MUST be defined using `Option`
* Each option MUST include:
* name
* type
* default value (if applicable)
* clear description
* Option names are **stable contracts** and must not be renamed lightly
## Error Handling & Logging
* Exceptions MUST include sufficient context (table, task, config key)
* Avoid swallowing exceptions
* Use proper log levels:
* INFO β lifecycle events
* WARN β recoverable issues
* ERROR β task-failing errors
* NEVER log sensitive information (passwords, tokens, credentials)
## Documentation Rules
* Any user-visible change MUST update:
* `docs/en`
* `docs/zh`
* Config names, defaults, and examples MUST match the code exactly
* Documentation is part of the feature, not an afterthought
## Testing Guidelines
### Unit Tests
* Located under `src/test/java`
* Validate behavior, not implementation details
* Prefer deterministic and minimal tests
Command:
```bash
./mvnw test
```
### E2E Tests
* Located in `seatunnel-e2e`
* Uses Testcontainers
* Extend `TestSuiteBase`
Command:
```bash
./mvnw -DskipUT -DskipIT=false verify
```
## Performance Awareness
Agents MUST consider performance implications:
* Avoid unnecessary object creation in hot paths
* Be cautious with large in-memory buffers
* Consider parallelism and resource usage
## PR Scope Rule
* Keep changes minimal and focused
* Avoid unrelated refactors or formatting-only changes
* One PR should solve **one problem**
## Running & Debugging
### Build from Source
```bash
./mvnw clean install -DskipTests -Dskip.spotless=true
```
### Install Connectors
```bash
sh bin/install-plugin.sh $current_version
```
### Run Job (Zeta)
```bash
sh bin/seatunnel.sh --config config/v2.batch.config.template -e local
```