Repository navigation
chore(release): v1.0.0-rc5 (security hardening, fleet concurrency, wasm fuel sandbox, 2.46M eps, and rustsec fixes) - #51
Merged
Conversation
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
…sm fuel sandbox, 2.46M eps, and rustsec fixes)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release Candidate 5 —
rekuiper v1.0.0-rc5This pull request prepares and qualifies
rekuiper v1.0.0-rc5(Release Candidate 5). It remediates newly published RustSec advisories (tokioandzstd), hardens REST/OTLP/UI authentication and network boundaries, eliminates lock-across-.awaitconcurrency hazards in the Fleet Control Plane while adding durable KV state persistence, enforces deterministic WASM instruction fuel metering with lock-free instance pooling, and updates the technical documentation and architectural diagrams.1. Executive Summary & Single-Core Benchmark Results
All benchmarks were executed on a single thread (
--test-threads=1,TOKIO_WORKER_THREADS=1) in--releasemode (-C target-cpu=native) on native Linuxext4viacrates/rekuiper-server/tests/perf_throughput.rs(500,000 events with activeWHERE temp > 20.0filtering,SELECT id, temp * 1.8 + 32 AS temp_fprojection, and dead-letter queue error checks enabled):0.0 ms0.0 ms2. Supply-Chain Security & RustSec Advisory Remediation
Remediated newly published RustSec advisories across the dependency tree while preserving strict zero-ignore isolation for downstream library crates (
rekuiper-coreandrekuiper-sql):v1.0.0-rc5RUSTSEC-2026-0386tokiotokio <= 1.53.1tokioinCargo.lockfrom1.53.1to1.54.1.RUSTSEC-2026-0410zstd-syszstd-sys 2.1.0+zstd.1.5.7zstd-sysinCargo.lockto2.1.2+zstd.1.5.7.RUSTSEC-2026-0391zstdzstd 0.13.3zstddependency inrekuiper-sqlfrom0.13to0.14.3(zstd-safe 8.2.0). Documented scoped transitive exception indeny.tomlforrskafka 0.6.0 -> zstd 0.13.3(SeekTable not used in Kafka framing).RUSTSEC-2026-0398zstd-safezstd-safe 7.3.0rekuiper-sqltozstd-safe 8.2.0; documented scoped transitive exception indeny.tomlforrskafka 0.6.0.RUSTSEC-2026-0403zstd-safezstd-safe 7.3.0rekuiper-sqltozstd-safe 8.2.0; documented scoped transitive exception indeny.tomlforrskafka 0.6.0.rekuiper-coreandrekuiper-sqlcompile with zero ignored RustSec advisories.3. Security & Network Boundary Hardening
crates/rekuiper-server/src/routes.rs):/uiand/ui/wsroutes are conditionally mounted only whenbasic.enable_uiistrue, returning404 Not Foundwhen disabled.crates/rekuiper-server/src/routes.rs,state.rs):basic.authenticationRS256 JWT validation across/ui,/v1/metrics,/v1/logs, and/v1/traces(or configuredui_passwordbearer token on/ui). Only public liveness routes (/,/ping) and fleet endpoints (/fleet/ws,/api/v1/fleet/*, which enforce dedicatedfleet_tokenbearer authentication) bypass the global RS256 middleware.crates/rekuiper-server/src/lib.rs,state.rs):59720) toapp.into_make_service_with_connect_info::<SocketAddr>()soui_ip_allowlistvalidates the client's TCP peer IP address rather than spoofableX-Forwarded-Forheaders.crates/rekuiper-server/src/lib.rs):config.basic.prometheus_port(default20499).4. Fleet Control Plane Concurrency & Durable KV Persistence
crates/rekuiper-server/src/fleet.rs):dispatch_snapshot_to_cohortandtrigger_rollbackto clone matching device command channels (mpsc::Sender<ControlMessage>) inside short synchronous read-lock scopes, drop the lock guard immediately, and perform asynchronous channel dispatch outside the lock.crates/rekuiper-server/src/fleet.rs,state.rs):Arc<dyn KvStore>toFleetControlPlanewith automatic state restoration (restore_from_kv()) on startup across four dedicated KV namespaces:fleet_devices,fleet_snapshots,fleet_rollouts, andfleet_audit(bounded to the 1,000 most recent entries).status: "offline"andconnected_via_ws: falseuntil their live Yamux WebSocket tunnel reconnects.5. WASM Sandbox Fuel Metering & Runtime Efficiency
crates/rekuiper-core/src/wasm.rs):wasmi::Config::consume_fuel(true)on the WASM engine and enforcedDEFAULT_WASM_FUEL_BUDGET = 1_000_000instructions per UDF call (store.set_fuel(...)). Runaway guest loops deterministically trap with an instruction budget exhaustion error instead of stalling Tokio worker threads.crates/rekuiper-core/src/wasm.rs):Linker::new+Module::instantiateallocations with a lock-freecrossbeam_queue::ArrayQueue<PooledInstance>(8 pre-instantiated instances per module) with automatic linear-memory offset reset (__heap_base/65536).crates/rekuiper-server/src/handlers/metrics.rs):sysinfo::System::new_all()scans onGET /andGET /metricswith a 500ms TTL cached snapshot (CachedHostStats).crates/rekuiper-core/src/manager.rs,crates/rekuiper-server/src/engine/windows.rs):Vec::remove(0)VecDeque::pop_front()TraceSpan.events,RuleErrorBuffer.entries, andJoinStreamState.rows.crates/rekuiper-server/src/engine/sources.rs):mqtt,httppull,httppush,file,kafka,redis,sql,websocket,simulator,video,zmq,parquet,edgex,rabbitmq,neuron,modbus,opcua,otlp) fromengine/mod.rsintoengine/sources.rs.6. Documentation & Release Artifacts (
1.0.0-rc5)docs/en_US/guide/ui/web_console_user_guide.md.docs/en_US/operation/fleet_management.md,docs/en_US/configuration/global_configurations.md,docs/en_US/extension/wasm/overview.md, anddocs/en_US/public/diagrams/mcp_architecture.svgwith the1.0.0-rc5runtime schemas and configuration parameters.Cargo.toml,Cargo.lock,Makefile,CHANGELOG.md,RELEASE_NOTES.md,SECURITY.md,README.md,openapi.json,deploy/chart/rekuiper/*,deploy/docker/*, anddocs/*to1.0.0-rc5.7. Verification Matrix
cargo fmt --all -- --check: 0 formatting diffscargo clippy --workspace --all-targets -- -D warnings: 0 warnings across all targetscargo-deny check advisories& downstreamrekuiper-core/rekuiper-sqlzero-ignore isolation: Passedcrates/rekuiper-core/src/wasm.rsunit & fuel-exhaustion sandbox tests: 4/4 passedcrates/rekuiper-server/tests/test_otlp_and_ui.rssecurity & auth hardening tests: 4/4 passedcrates/rekuiper-server/tests/test_phase4_fleet_control_plane.rsconcurrency & KV persistence tests: 2/2 passedcrates/rekuiper-server/tests/perf_throughput.rssingle-core--releasebenchmark: 2,464,711.30 EPS (zero-parse) / 1,141,416.93 EPS (JSON)