goutamadwant opened a new pull request, #12168:
URL: https://github.com/apache/seatunnel/pull/12168
### Purpose of this pull request
Related to #12127.
On `dev`, the Couchbase sink always gives `waitUntilReady` 30 seconds, so
users cannot accommodate a longer bucket-readiness window. Add an optional
`ready.timeout` in seconds and pass it from the factory to the writer.
This addresses the configuration gap reported in the issue. It does not
establish or fix the cause of the intermittent KV SASL failures observed in CI.
### Does this PR introduce _any_ user-facing change?
Yes. Users can set `ready.timeout = 60`, for example. The existing 30-second
default is unchanged, including when older serialized writer options are
restored. Zero and negative values are rejected before connecting.
The SDK continues to handle connection attempts within the readiness wait.
No outer retry loop is added; write retries, operation timeouts and failure
cleanup remain unchanged. English and Chinese documentation describe the option
and its limits.
### How was this patch tested?
- 37 connector unit tests passed on Java 8 and Java 11, including factory
wiring, invalid values, serialization compatibility and failure cleanup.
- Two real-service factory-level integration tests passed on each JDK:
readiness failure followed by successful writing, and invalid credentials
remaining a failure.
- A separate real-service reproduction pauses a healthy, authenticated
Couchbase server for 35 seconds. With identical configuration, the original
writer times out after 30 seconds; the configured writer waits for recovery and
writes a row verified independently.
- Full-repository `./mvnw -q -DskipTests verify` passed on Java 11,
including distribution packaging. Root `spotless:apply` and all five
naming/documentation checks passed. The exported connector metadata includes
the new option, default and positive-value constraint.
Local factory-level integration tests used Couchbase Server 7.6.2 Enterprise
on ARM; the separate outage reproduction used 7.6.2 Community. Both used the
unchanged Java SDK 3.5.1. The integration test defaults to the existing
Community 7.1.1 image; that exact image could not run locally under x86
emulation. These checks do not claim full multi-engine E2E or CI success.
With the project dependencies installed, run the connector tests and the new
integration slice with each JDK:
```sh
mvn -pl seatunnel-connectors-v2/connector-couchbase clean install
mvn -pl seatunnel-e2e/seatunnel-connector-v2-e2e/connector-couchbase-e2e \
-DskipUT -DskipIT=false -Dit.test=CouchbaseReadinessIT verify
```
The local integration invocation also used `-Dapi.version=1.44
-Dcouchbase.test.image=couchbase/server:7.6.2` for Docker 29 and the ARM host.
### Check list
* [ ] If any new Jar binary package adding in your PR, please add License
Notice according to the [New License
Guide](https://github.com/apache/seatunnel/blob/dev/docs/en/developer/new-license.md).
Not applicable: no dependencies added.
* [x] If necessary, please update the
[documentation](https://github.com/apache/seatunnel/tree/dev/docs) to describe
the new feature. English and Chinese connector docs updated.
* [ ] If necessary, please update `incompatible-changes.md` to describe the
incompatibility caused by this PR. Not applicable: existing defaults and
contracts preserved.
* [x] If you are contributing connector code, check the following files:
1.
[plugin-mapping.properties](https://github.com/apache/seatunnel/blob/dev/plugin-mapping.properties):
no registration change needed.
2. [seatunnel-dist
pom](https://github.com/apache/seatunnel/blob/dev/seatunnel-dist/pom.xml): no
packaging change needed.
3.
[label-scope-conf](https://github.com/apache/seatunnel/blob/dev/.github/workflows/labeler/label-scope-conf.yml):
existing connector label applies.
4.
[seatunnel-e2e](https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e):
factory-level readiness integration tests added.
5.
[plugin_config](https://github.com/apache/seatunnel/blob/dev/config/plugin_config):
no plugin installation change needed.
--
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]