Skip to content

RSCBC-277: Move FIT Performers to Prebuilt Containers#483

Open
Matt-Woz wants to merge 1 commit into
mainfrom
RSCBC-277
Open

RSCBC-277: Move FIT Performers to Prebuilt Containers#483
Matt-Woz wants to merge 1 commit into
mainfrom
RSCBC-277

Conversation

@Matt-Woz

Copy link
Copy Markdown
Contributor

Changes

  • Moved FIT performer and proto definitions to new performer directory/workspace
  • Added GHA job for building the performer and pruning stale images.

@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

BranchRSCBC-277-28033795838-170-1
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
query📈 view plot
🚷 view threshold
445.30 µs
(+5.59%)Baseline: 421.71 µs
484.96 µs
(91.82%)
upsert_and_get📈 view plot
🚷 view threshold
420.71 µs
(+3.93%)Baseline: 404.80 µs
465.52 µs
(90.37%)
🐰 View full continuous benchmarking report in Bencher

@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

BranchRSCBC-277-28038160013-171-1
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
query📈 view plot
🚷 view threshold
417.76 µs
(-0.94%)Baseline: 421.71 µs
484.96 µs
(86.14%)
upsert_and_get📈 view plot
🚷 view threshold
413.82 µs
(+2.23%)Baseline: 404.80 µs
465.52 µs
(88.89%)
🐰 View full continuous benchmarking report in Bencher

@Matt-Woz Matt-Woz force-pushed the RSCBC-277 branch 2 times, most recently from 855647f to 5732233 Compare June 23, 2026 16:00
@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

BranchRSCBC-277-28038724671-172-1
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
query📈 view plot
🚷 view threshold
417.36 µs
(-1.03%)Baseline: 421.71 µs
484.96 µs
(86.06%)
upsert_and_get📈 view plot
🚷 view threshold
397.02 µs
(-1.92%)Baseline: 404.80 µs
465.52 µs
(85.28%)
🐰 View full continuous benchmarking report in Bencher

@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

BranchRSCBC-277-28039031884-173-1
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
query📈 view plot
🚷 view threshold
446.30 µs
(+5.83%)Baseline: 421.71 µs
484.96 µs
(92.03%)
upsert_and_get📈 view plot
🚷 view threshold
429.39 µs
(+6.07%)Baseline: 404.80 µs
465.52 µs
(92.24%)
🐰 View full continuous benchmarking report in Bencher

@Matt-Woz Matt-Woz force-pushed the RSCBC-277 branch 2 times, most recently from e85cccb to d151b6b Compare June 23, 2026 16:40
@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

BranchRSCBC-277-28041261111-174-1
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
query📈 view plot
🚷 view threshold
418.90 µs
(-0.67%)Baseline: 421.71 µs
484.96 µs
(86.38%)
upsert_and_get📈 view plot
🚷 view threshold
435.90 µs
(+7.68%)Baseline: 404.80 µs
465.52 µs
(93.64%)
🐰 View full continuous benchmarking report in Bencher

@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

BranchRSCBC-277-28041529880-175-1
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
query📈 view plot
🚷 view threshold
457.92 µs
(+8.59%)Baseline: 421.71 µs
484.96 µs
(94.42%)
upsert_and_get📈 view plot
🚷 view threshold
440.51 µs
(+8.82%)Baseline: 404.80 µs
465.52 µs
(94.63%)
🐰 View full continuous benchmarking report in Bencher

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Introduces a new performer/ Rust workspace/crate (FIT performer gRPC server) along with vendored FIT protocol protobuf definitions, plus GitHub Actions workflows to build/publish the performer container image and prune stale GHCR images.

Changes:

  • Add new fit-performer crate, including translation layers from FIT protos to SDK options, stream tracking, basic observability wiring, batching, counters, and workload execution.
  • Vendor FIT protocol protobuf definitions under performer/proto/ and add a build script to generate Rust code.
  • Add GitHub Actions workflows for building/publishing performer images and pruning stale images; update clippy workflow and workspace membership.

Reviewed changes

Copilot reviewed 129 out of 129 changed files in this pull request and generated 18 comments.

Show a summary per file
File Description
sdk/couchbase-core/src/memdx/connection.rs Adds clippy allow for large enum variant warning.
performer/src/translations/wait_until_ready_options.rs Maps wait-until-ready proto options into SDK options.
performer/src/translations/subdoc_options.rs Maps subdoc-related option protos to SDK options.
performer/src/translations/search_index_options.rs Maps search index management option protos to SDK options.
performer/src/translations/query_index_options.rs Maps query index management option protos to SDK options.
performer/src/translations/mod.rs Exposes translation modules.
performer/src/translations/collection_manager_settings.rs Maps collection settings protos to SDK collection settings types.
performer/src/translations/collection_manager_options.rs Maps collection-manager option protos to SDK options.
performer/src/translations/cluster_options.rs Builds SDK cluster options + timeout bundle from proto config/auth.
performer/src/translations/bucket_manager_options.rs Maps bucket-manager option protos to SDK options.
performer/src/streams/stream.rs Adds a unified enum wrapper for supported stream types.
performer/src/streams/stream_owner.rs Adds global stream registry and completion waiting/cleanup.
performer/src/streams/mod.rs Exposes stream modules.
performer/src/observability/span_owner.rs Adds span ownership and span create/finish handling.
performer/src/observability/mod.rs Exposes observability modules.
performer/src/main.rs Adds performer binary entrypoint and logging initialization.
performer/src/errors/mod.rs Exposes performer error module.
performer/src/errors/error.rs Defines performer error type and SDK-to-driver error plumbing.
performer/src/counters/mod.rs Exposes counters module.
performer/src/counters/counter.rs Implements shared counters for bounds/pool selection.
performer/src/common/mod.rs Exposes common utilities (batcher, bounds, executor, etc.).
performer/src/common/metrics.rs Adds metrics reporter that periodically emits JSON metrics results.
performer/src/common/location.rs Adds document location resolution (specific/pool/uuid).
performer/src/common/horizontal_scale_runner.rs Adds workload runner for horizontal scaling execution.
performer/src/common/executor.rs Adds executor for SDK commands with batching/stream/span wiring.
performer/src/common/bounds.rs Adds counter/time bounds execution logic.
performer/src/common/batcher.rs Adds batching queue and periodic flush to gRPC stream.
performer/src/commands/wait_until_ready.rs Adds wait-until-ready command execution wrapper.
performer/src/commands/mutations.rs Adds mutation command trait + result mapping.
performer/src/commands/mod.rs Declares command modules.
performer/src/commands/kv_binary.rs Implements binary KV commands and result mapping.
performer/src/commands/helpers.rs Adds helper functions for results/timestamps/error handling.
performer/src/commands/execution.rs Adds common execution helpers (simple + mutation execution).
performer/src/commands/authenticator.rs Adds set-authenticator command execution wrapper.
performer/src/cluster/options.rs Defines performer-side cluster option bundle types.
performer/src/cluster/mod.rs Exposes cluster modules.
performer/src/cluster/connection.rs Adds cluster connection creation with a connect timeout wrapper.
performer/scripts/update-protobuf.sh Adds script to refresh vendored protocol protos from upstream.
performer/README.md Adds performer build/run/docker documentation.
performer/proto/operational/transactions.workload.proto Adds vendored FIT protocol definitions (transactions workload).
performer/proto/operational/transactions.options.proto Adds vendored FIT protocol definitions (transactions options).
performer/proto/operational/transactions.legacy.proto Adds vendored FIT protocol definitions (legacy transactions).
performer/proto/operational/transactions.extensions.proto Adds vendored FIT protocol definitions (transactions caps).
performer/proto/operational/transactions.client_record.proto Adds vendored FIT protocol definitions (client record).
performer/proto/operational/transactions.cleanup.proto Adds vendored FIT protocol definitions (cleanup).
performer/proto/operational/transactions.basic.proto Adds vendored FIT protocol definitions (basic txn types).
performer/proto/operational/streams.top_level.proto Adds vendored FIT protocol definitions (streams API).
performer/proto/operational/shared.transcoders.proto Adds vendored FIT protocol definitions (transcoders/serializer).
performer/proto/operational/shared.transaction_config.proto Adds vendored FIT protocol definitions (txn config shared).
performer/proto/operational/shared.latch.proto Adds vendored FIT protocol definitions (latches).
performer/proto/operational/shared.exceptions.proto Adds vendored FIT protocol definitions (exception model).
performer/proto/operational/shared.echo.proto Adds vendored FIT protocol definitions (echo).
performer/proto/operational/shared.doc_location.proto Adds vendored FIT protocol definitions (doc location).
performer/proto/operational/shared.content.proto Adds vendored FIT protocol definitions (content/contentAs).
performer/proto/operational/shared.collection.proto Adds vendored FIT protocol definitions (collection/scope).
performer/proto/operational/shared.bounds.proto Adds vendored FIT protocol definitions (bounds/counters).
performer/proto/operational/shared.basic.proto Adds vendored FIT protocol definitions (basic shared types).
performer/proto/operational/sdk.search.index_manager.proto Adds vendored FIT protocol definitions (search index mgmt).
performer/proto/operational/sdk.scope.search.index_manager.proto Adds vendored FIT protocol definitions (scope search index mgmt).
performer/proto/operational/sdk.query.proto Adds vendored FIT protocol definitions (query).
performer/proto/operational/sdk.query.index_manager.proto Adds vendored FIT protocol definitions (query index mgmt).
performer/proto/operational/sdk.query.index_manager.options.proto Adds vendored FIT protocol definitions (query index options).
performer/proto/operational/sdk.kv.rangescan.top_level.proto Adds vendored FIT protocol definitions (KV range scan).
performer/proto/operational/sdk.kv.options.proto Adds vendored FIT protocol definitions (KV options).
performer/proto/operational/sdk.kv.mutate_in.proto Adds vendored FIT protocol definitions (mutateIn).
performer/proto/operational/sdk.kv.lookup_in.proto Adds vendored FIT protocol definitions (lookupIn + replicas).
performer/proto/operational/sdk.kv.commands.proto Adds vendored FIT protocol definitions (KV commands/results).
performer/proto/operational/sdk.kv.binary.options.proto Adds vendored FIT protocol definitions (binary KV options).
performer/proto/operational/sdk.kv.binary.commands.proto Adds vendored FIT protocol definitions (binary KV commands/results).
performer/proto/operational/sdk.collection.query.index_manager.proto Adds vendored FIT protocol definitions (collection query index mgmt).
performer/proto/operational/sdk.cluster.wait_until_ready.proto Adds vendored FIT protocol definitions (waitUntilReady).
performer/proto/operational/sdk.cluster.search.index_manager.proto Adds vendored FIT protocol definitions (cluster search index mgmt).
performer/proto/operational/sdk.cluster.query.index_manager.proto Adds vendored FIT protocol definitions (cluster query index mgmt).
performer/proto/operational/sdk.cluster.bucket_manager.proto Adds vendored FIT protocol definitions (bucket manager).
performer/proto/operational/sdk.circuit_breaker.config.proto Adds vendored FIT protocol definitions (circuit breaker config).
performer/proto/operational/sdk.caps.proto Adds vendored FIT protocol definitions (SDK caps).
performer/proto/operational/sdk.bucket.collection_manager.proto Adds vendored FIT protocol definitions (collection manager).
performer/proto/operational/run.workloads.proto Adds vendored FIT protocol definitions (run workloads).
performer/proto/operational/run.top_level.proto Adds vendored FIT protocol definitions (run top-level).
performer/proto/operational/run.config.proto Adds vendored FIT protocol definitions (run config/streaming).
performer/proto/operational/README.md Adds vendored FIT protocol documentation.
performer/proto/operational/performer.caps.proto Adds vendored FIT protocol definitions (performer caps).
performer/proto/operational/observability.top.proto Adds vendored FIT protocol definitions (span create/finish).
performer/proto/operational/observability.config.proto Adds vendored FIT protocol definitions (observability config).
performer/proto/operational/metrics.top_level.proto Adds vendored FIT protocol definitions (metrics results).
performer/proto/operational/meta.workload.proto Adds vendored FIT protocol definitions (meta workload).
performer/proto/operational/hooks.transactions.proto Adds vendored FIT protocol definitions (txn hooks).
performer/proto/columnar/columnar.services.proto Adds vendored Columnar FIT protocol definitions (services).
performer/proto/columnar/columnar.serialization.proto Adds vendored Columnar FIT protocol definitions (serialization).
performer/proto/columnar/columnar.result.proto Adds vendored Columnar FIT protocol definitions (result wrapper).
performer/proto/columnar/columnar.metadata.proto Adds vendored Columnar FIT protocol definitions (response metadata).
performer/proto/columnar/columnar.execution_context.proto Adds vendored Columnar FIT protocol definitions (execution context).
performer/proto/columnar/columnar.errors.proto Adds vendored Columnar FIT protocol definitions (error model).
performer/proto/columnar/columnar.cluster_management.proto Adds vendored Columnar FIT protocol definitions (cluster mgmt).
performer/Dockerfile Adds Docker build for performer (multi-stage).
performer/Cargo.toml Adds new crate manifest and dependencies.
performer/build.rs Adds proto compilation into Rust modules at build time.
performer/.gitignore Ignores generated src/proto/ output.
Cargo.toml Adds performer to the workspace members list.
.github/workflows/prune-stale-images.yml Adds scheduled GHCR image pruning workflow.
.github/workflows/fit-performer-image.yml Adds workflow to build/publish performer image on push/tags/manual.
.github/workflows/clippy.yml Adjusts clippy runs for workspace + performer.
.dockerignore Adds docker build context exclusions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread performer/src/translations/wait_until_ready_options.rs
Comment thread performer/src/translations/wait_until_ready_options.rs
Comment thread performer/src/translations/cluster_options.rs
Comment thread performer/src/translations/cluster_options.rs
Comment thread performer/src/common/location.rs
Comment thread performer/src/main.rs
Comment thread performer/README.md Outdated
Comment thread performer/build.rs
Comment thread .github/workflows/fit-performer-image.yml
Comment thread .github/workflows/fit-performer-image.yml Outdated
@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

BranchRSCBC-277-28167089865-176-1
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
query📈 view plot
🚷 view threshold
459.40 µs
(+8.94%)Baseline: 421.71 µs
484.96 µs
(94.73%)
upsert_and_get📈 view plot
🚷 view threshold
453.99 µs
(+12.15%)Baseline: 404.80 µs
465.52 µs
(97.52%)
🐰 View full continuous benchmarking report in Bencher

@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

BranchRSCBC-277-28167183573-177-1
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
query📈 view plot
🚷 view threshold
421.43 µs
(-0.07%)Baseline: 421.71 µs
484.96 µs
(86.90%)
upsert_and_get📈 view plot
🚷 view threshold
424.93 µs
(+4.97%)Baseline: 404.80 µs
465.52 µs
(91.28%)
🐰 View full continuous benchmarking report in Bencher

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants