refactor(connections): core S3ClientFactory on QQQ RC.5 (#10) #11

Merged
KofTwentyTwo merged 2 commits from feature/arch-s3factory into develop 2026-10-14 00:46:15 +00:00
KofTwentyTwo commented 2026-10-14 00:36:11 +00:00 (Migrated from github.com)

Summary

Closes #10 (architecture review QRun-IO/qqq#1150, finding F3).

  • Bumps to QQQ 4.1.0-RC.5. Adds qqq-backend-module-filesystem for S3ClientFactory; its unused SFTP/SSH transitive dependencies are excluded, and the AWS SDK is unchanged.

  • ConnectionRuntime maps StorageConnectionConfig to S3BackendMetaData and builds the client through core S3ClientFactory.buildClient. The mapping covers endpoint, region, path-style, checksum mode, TLS verify / CA, credentials and timeouts. The qbit's own per-connection cache, keyed by the settings hash, still rebuilds the client on connection edits.

  • Deletes the duplicated HTTP client, TLS and trust-manager code.

  • Stays local:

    • the S3Presigner, which core does not provide;
    • a small session-credentials bridge, because S3BackendMetaData has no session token or credentials-provider hook;
    • SecretRefs ${file.PATH}.

    The last two are tagged STAND-IN(core=QRun-IO/qqq#1165, removeBy=4.1.0-RC.7). Core issue QRun-IO/qqq#1165 was filed for both.

  • Behaviour change: retries follow the core and SDK defaults instead of a forced ADAPTIVE_V2.

  • Details and the dependency diff: docs/S3-FACTORY-MIGRATION.md.

Tests

mvnw -B verify with Docker/MinIO: 122 tests, 0 failures, 2 skipped. Coverage and checkstyle gates pass.

New ConnectionRuntimeTest asserts that every setting reaches S3BackendMetaData.

🤖 Generated with Claude Code

## Summary Closes #10 (architecture review QRun-IO/qqq#1150, finding F3). - Bumps to **QQQ 4.1.0-RC.5**. Adds `qqq-backend-module-filesystem` for `S3ClientFactory`; its unused SFTP/SSH transitive dependencies are excluded, and the AWS SDK is unchanged. - `ConnectionRuntime` maps `StorageConnectionConfig` to `S3BackendMetaData` and builds the client through core `S3ClientFactory.buildClient`. The mapping covers endpoint, region, path-style, checksum mode, TLS verify / CA, credentials and timeouts. The qbit's own per-connection cache, keyed by the settings hash, still rebuilds the client on connection edits. - Deletes the duplicated HTTP client, TLS and trust-manager code. - **Stays local:** - the `S3Presigner`, which core does not provide; - a small **session-credentials** bridge, because `S3BackendMetaData` has no session token or credentials-provider hook; - `SecretRefs` `${file.PATH}`. The last two are tagged `STAND-IN(core=QRun-IO/qqq#1165, removeBy=4.1.0-RC.7)`. Core issue **QRun-IO/qqq#1165** was filed for both. - **Behaviour change:** retries follow the core and SDK defaults instead of a forced `ADAPTIVE_V2`. - Details and the dependency diff: `docs/S3-FACTORY-MIGRATION.md`. ## Tests `mvnw -B verify` with Docker/MinIO: 122 tests, 0 failures, 2 skipped. Coverage and checkstyle gates pass. New `ConnectionRuntimeTest` asserts that every setting reaches `S3BackendMetaData`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.