Skip to content

feat: 30.2 — external sdk unification (5 sdks)#113

Merged
vieiralucas merged 2 commits intomainfrom
feat/30.2-external-sdk-unification
Mar 25, 2026
Merged

feat: 30.2 — external sdk unification (5 sdks)#113
vieiralucas merged 2 commits intomainfrom
feat/30.2-external-sdk-unification

Conversation

@vieiralucas
Copy link
Copy Markdown
Member

@vieiralucas vieiralucas commented Mar 25, 2026

Summary

Changes per SDK

  • batch_enqueueenqueue_many (or language-idiomatic equivalent)
  • BatchModeAccumulatorMode
  • Ack/Nack wrap single items in repeated fields
  • Consume only reads messages (no singular fallback)
  • No "batch" prefix in any public API

Test plan

  • Go: 20/20 tests pass
  • Python: 31/31 tests pass
  • JS: 30/30 tests pass
  • Ruby: tests pass
  • Java: 34/35 pass (1 pre-existing TLS failure on main)

🤖 Generated with Claude Code


Summary by cubic

Unified all 5 external SDKs (Go, Python, JS, Ruby, Java) to the Story 30.1 API surface, removing batch-prefixed APIs and standardizing enqueue/consume/ack/nack shapes. Updated planning artifacts to mark Story 30.2 as done; CI is green across SDKs except one known Java TLS flake.

  • Migration
    • Replace batch_enqueue with enqueue_many (language-idiomatic names).
    • Rename BatchMode to AccumulatorMode.
    • enqueue accepts one or more messages; consume reads messages only.
    • ack/nack accept one or more message IDs.
    • Remove any batch prefix/suffix from public APIs.

Written for commit 68cf818. Summary will update on new commits.

Benchmark Results (vs main baseline)

Baseline commit: 93584a6 PR commit: c216c8d Threshold: 10%

Benchmark Baseline Current Change Unit
compaction_active_enqueue_max 41.18 41.28 +0.2% ms
compaction_active_enqueue_p50 0.66 0.68 +3.2% ms
compaction_active_enqueue_p95 0.70 0.72 +2.8% ms
compaction_active_enqueue_p99 0.78 0.83 +7.5% ms
compaction_active_enqueue_p99_9 40.77 40.80 +0.1% ms
compaction_active_enqueue_p99_99 41.15 41.22 +0.2% ms
compaction_idle_enqueue_max 41.22 41.89 +1.6% ms
compaction_idle_enqueue_p50 0.31 0.32 +3.8% ms
compaction_idle_enqueue_p95 0.35 0.36 +3.2% ms
compaction_idle_enqueue_p99 0.37 0.40 +5.9% ms
compaction_idle_enqueue_p99_9 40.73 40.86 +0.3% ms
compaction_idle_enqueue_p99_99 41.15 41.22 +0.2% ms
compaction_p99_delta 0.38 0.45 +19.5% ms 🔴
consumer_concurrency_100_throughput 1782.00 1662.67 -6.7% msg/s
consumer_concurrency_10_throughput 1119.00 1083.33 -3.2% msg/s
consumer_concurrency_1_throughput 130.33 103.33 -20.7% msg/s 🔴
e2e_latency_light_max 42.53 42.40 -0.3% ms
e2e_latency_light_p50 40.54 40.58 +0.1% ms
e2e_latency_light_p95 40.70 41.41 +1.7% ms
e2e_latency_light_p99 41.41 41.47 +0.2% ms
e2e_latency_light_p99_9 41.50 41.57 +0.2% ms
e2e_latency_light_p99_99 42.53 42.40 -0.3% ms
enqueue_throughput_1kb 3486.96 2936.88 -15.8% msg/s 🔴
enqueue_throughput_1kb_mbps 3.41 2.87 -15.8% MB/s 🔴
equal_weight_fairness_jains_index 1.00 1.00 +0.0% index
equal_weight_fairness_max_deviation 0.00 0.00 n/a % deviation
equal_weight_fairness_tenant-1 0.00 0.00 n/a % deviation
equal_weight_fairness_tenant-2 0.00 0.00 n/a % deviation
equal_weight_fairness_tenant-3 0.00 0.00 n/a % deviation
equal_weight_fairness_tenant-4 0.00 0.00 n/a % deviation
equal_weight_fairness_tenant-5 0.00 0.00 n/a % deviation
fairness_accuracy_jains_index 1.00 1.00 +0.0% index
fairness_accuracy_max_deviation 0.20 0.20 +0.0% % deviation
fairness_accuracy_tenant-1 0.20 0.20 +0.0% % deviation
fairness_accuracy_tenant-2 0.20 0.20 +0.0% % deviation
fairness_accuracy_tenant-3 0.10 0.10 +0.0% % deviation
fairness_accuracy_tenant-4 0.10 0.10 +0.0% % deviation
fairness_accuracy_tenant-5 0.10 0.10 +0.0% % deviation
fairness_overhead_fair_throughput 1103.32 1037.16 -6.0% msg/s
fairness_overhead_fifo_throughput 1106.24 1068.43 -3.4% msg/s
fairness_overhead_pct 0.29 3.08 +973.3% % 🔴
key_cardinality_10_throughput 1273.29 1280.27 +0.5% msg/s
key_cardinality_10k_throughput 506.56 503.62 -0.6% msg/s
key_cardinality_1k_throughput 778.65 759.60 -2.4% msg/s
lua_on_enqueue_overhead_us 27.41 36.11 +31.7% us 🔴
lua_throughput_with_hook 874.09 868.55 -0.6% msg/s
memory_per_message_overhead 169.16 1794.05 +960.5% bytes/msg 🔴
memory_rss_idle 427.90 407.88 -4.7% MB
memory_rss_loaded_10k 429.99 425.02 -1.2% MB

Summary: 7 regressed, 0 improved, 42 unchanged

⚠️ Performance regression detected — 7 metric(s) exceeded the 10% threshold

All 5 external SDKs updated to unified API surface:
- Go PR #4, Python PR #4, JS PR #4, Ruby PR #4, Java PR #4
- batch_enqueue removed, enqueue_many added in all SDKs
- BatchMode renamed to AccumulatorMode
- No batch prefix in any public API
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

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

No issues found across 3 files

Base automatically changed from feat/30.1-api-surface-unification to main March 25, 2026 03:55
@vieiralucas vieiralucas merged commit c327e02 into main Mar 25, 2026
9 of 10 checks passed
@vieiralucas vieiralucas deleted the feat/30.2-external-sdk-unification branch March 25, 2026 03:56
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.

1 participant