goutamadwant opened a new issue, #12827:
URL: https://github.com/apache/seatunnel/issues/12827

   ### Search before asking
   
   - [x] I searched existing feature issues and pull requests. #10443 tracks 
the Couchbase source gap; I found no separate source issue or implementation PR.
   
   ### Description
   
   SeaTunnel has a Couchbase sink but no Couchbase source. Add a bounded, 
read-only source that reads JSON documents from one configured bucket, scope, 
and collection into an explicitly declared SeaTunnel schema. This is the 
source-only first slice requested in #10443; the existing sink remains 
unchanged.
   
   The first slice should:
   
   - Authenticate with the Couchbase SDK using `connection.string`, `username`, 
and `password`. Support `couchbase://` and `couchbases://`; private-CA trust 
uses the SDK's `security.trustCertificate` connection-string parameter, with 
hostname verification retained.
   - Require an explicit `schema.fields`. Map document fields case-sensitively 
through SeaTunnel's JSON conversion; ignore unconfigured fields, map 
missing/null fields to null, and fail on invalid types or non-object documents 
without logging document contents.
   - Query the selected collection with quoted SQL++ identifiers, read-only 
options, `REQUEST_PLUS` scan consistency, and backpressured row consumption. 
Require an existing suitable index and query permission; do not create database 
objects.
   - Use one reader (`parallelism = 1`). The first slice does not partition 
into splits or use `LIMIT`/`OFFSET` pagination.
   - State recovery semantics explicitly: no checkpointed document offset; 
after failure/restore, the collection query restarts from the beginning and 
previously emitted rows may be replayed. `REQUEST_PLUS` is not a 
transactionally consistent snapshot. There is no CDC, incremental read, schema 
inference, or exactly-once guarantee.
   - Provide bounded readiness/query timeouts and cancellation. Cancellation of 
an active query should stop the read; cancellation during the SDK's synchronous 
bucket-readiness check may wait until the configured readiness timeout before 
cleanup.
   
   ### Usage scenario
   
   Run a bounded batch job that exports an existing Couchbase collection to a 
SeaTunnel sink, with a declared schema and an idempotent downstream write 
strategy when restart/replay is possible. For a stable export, quiesce 
concurrent writes to the collection.
   
   ### Before and after
   
   - **Before:** Couchbase can be a SeaTunnel sink, but cannot be selected as a 
source.
   - **After:** A batch job can read a named Couchbase scope/collection as a 
source without changing existing sink behavior or configuration.
   
   ### Validation boundary
   
   The candidate implementation has Java 11 connector/config tests and a 
Testcontainers run against Couchbase Community 7.1.1 across Flink, Zeta, and 
Spark engine templates, including a named scope/collection and index-readiness 
check. A real private-CA TLS handshake and non-admin RBAC environment are not 
available locally; SDK credential/TLS option pass-through is unit-tested. Those 
limits should be stated in the PR.
   
   ### Compatibility
   
   No existing Couchbase sink option, default, or behavior changes. This adds a 
source path and documentation. The single-reader and replay-on-restore limits 
are intentional first-slice behavior, not compatibility changes.
   
   ### Related issues
   
   Tracked under #10443. This separate issue records the source-only contract 
requested by maintainers there.
   
   ### Are you willing to submit a PR?
   
   - [x] Yes, I am willing to submit a PR.
   
   ### Code of Conduct
   
   - [x] I agree to follow the project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct).
   


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