Skip to content

Add replication compression setting#137

Merged
atimin merged 3 commits into
mainfrom
136-replication-compression
Jul 14, 2026
Merged

Add replication compression setting#137
atimin merged 3 commits into
mainfrom
136-replication-compression

Conversation

@mother-6000

@mother-6000 mother-6000 commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Closes #136

Please check if the PR fulfills these requirements

  • Tests for the changes have been added (for bug fixes / features)
  • Docs have been added / updated (for bug fixes / features)
  • CHANGELOG.md has been updated (for bug fixes / features / docs)

What kind of change does this PR introduce?

Feature.

What was changed?

  • Added IClient::ReplicationCompression with kNone, kZstd, and kGzip.
  • Added ReplicationSettings::compression, defaulting to kNone.
  • Serialized non-default replication compression as the API compression field for create/update requests.
  • Parsed missing, null, none, zstd, and gzip compression values from full replication info.
  • Added replication serialization/parsing tests and a [1_21] integration test for create/get/update compression.
  • Updated CI's latest test exclusion to skip the new [1_21] server-main-only test.

kNone is omitted on write to preserve compatibility with older ReductStore servers while still behaving as the API default.

Related issues

Does this PR introduce a breaking change?

No. Existing callers that omit compression continue to compile and use the default none behavior. Older server responses without settings.compression parse as kNone.

Other information:

Local validation:

  • find src/ \( -name "*.cc" -o -name "*.h" \) -print0 | xargs -0 cpplint
  • find tests/ \( -name "*.cc" -o -name "*.h" \) -print0 | xargs -0 cpplint
  • find examples/ \( -name "*.cc" -o -name "*.h" \) -print0 | xargs -0 cpplint
  • cmake -S . -B build -DREDUCT_CPP_USE_FETCHCONTENT=ON -DREDUCT_CPP_ENABLE_TESTS=ON
  • cmake --build build
  • REDUCT_CPP_TOKEN_API=TOKEN ./build/bin/reduct-tests against reduct/store:main with RS_API_TOKEN=TOKEN, RS_AUDIT_ENABLED=false, RS_SYSTEM_EVENTS_ENABLED=false
  • REDUCT_CPP_TOKEN_API=TOKEN ./build/bin/reduct-tests "~[1_21]" against reduct/store:latest with the same server env
  • ./build/bin/reduct-tests "~[token_api]" -r compact against unauthenticated reduct/store:main
  • ./build/bin/reduct-tests "~[token_api]~[1_21]" -r compact against unauthenticated reduct/store:latest

@mother-6000

Copy link
Copy Markdown
Contributor Author

@reductstore/maintainers @reductstore/devops @atimin ready for review.

The SDK/API changes follow the approved plan from #136. I also touched .github/workflows/ci.yml so the new [1_21] integration test is skipped against reduct/store:latest, matching the local validation command used for the stable image.

@atimin atimin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update CHANGELOG and address my comments

Comment thread .github/workflows/ci.yml Outdated
@mother-6000 mother-6000 requested a review from atimin July 14, 2026 12:45

@atimin atimin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see my previous

@atimin atimin merged commit 757f9f3 into main Jul 14, 2026
23 of 25 checks passed
@atimin atimin deleted the 136-replication-compression branch July 14, 2026 13:25
@github-project-automation github-project-automation Bot moved this from In review to Done in ReductStore Roadmap Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

C++ SDK: add replication compression setting

2 participants