Skip to content

v2.5.0-alpha.2

Pre-release
Pre-release

Choose a tag to compare

@ngjaying ngjaying released this 08 Oct 03:43
· 45 commits to master since this release
45732f6

Second alpha of the 2.5.0 minor release. For preview and testing; production users stay on 2.4.x.

Full Changelog: v2.5.0-alpha.1...v2.5.0-alpha.2

⚠️ Breaking Changes

  • File path access sandboxing (#4144): File sink, file source, and RPC import/export operations are now restricted to the data directory by default. Access to external filesystem paths requires configuring allowExternalFileAccess: true.
  • Stream buffer full policies and deprecation of disableBufferFullDiscard (#4133): Buffer behavior is now configured on stream definitions via BUFFER_FULL_POLICY="block|dropOldest". The rule option disableBufferFullDiscard is deprecated. In multi-stream rules, all streams must resolve to the identical buffer policy, or rule planning will fail with a conflict error.
  • SQL sink and lookup nil key rejection (#4140): In SQL sink update/delete operations and lookup queries, nil key values in WHERE conditions now return an error instead of matching rows via IS NULL.

New Features

  • Stream buffer policies: support BUFFER_FULL_POLICY="block|dropOldest" on stream definitions with shared-stream backpressure and cancellable blocked delivery by @ngjaying in #4133
  • Cumulative analytic function acc_distinct_collect and array index function array_positions by @Yisaer in #4163
  • Infinite SQL reconnect recovery across temporary database outages and non-blocking lookup table creation by @ngjaying in #4166
  • Explicit connection identity in the connection pool separating shared connection keys from consumer reference IDs by @ngjaying in #4170

Security Hardening

  • Block SSRF in gRPC executor, WebSocket client, and msgpack executor by enforcing basic.enablePrivateNet on egress dialers by @ngjaying in #4143
  • Restrict file source/sink and RPC import/export paths to the data directory sandbox, and enforce ID validation on plugin/service names by @ngjaying in #4144
  • Parameterize SQL sink write queries with dialect-aware placeholders (?, $N, @pN, :N), typed parameter binding, and driver parameter limit chunking by @ngjaying in #4140
  • Parameterize SQL lookup query values with dialect-aware placeholders to eliminate SQL injection and literal formatting bugs by @ngjaying in #4139

Bug Fixes

  • JOIN: determine left and right sides strictly from FROM (left) and JOIN (right) instead of ON clause predicate mention order by @SahilRajputdotexe in #4189
  • Conf: honor companion JSON schema property types during environment variable configuration overrides to prevent numeric-like strings (e.g. passwords, client IDs) from decoding as integers by @Dream95 in #4160
  • Cache: exclude tracer runtime contexts from gob serialization to allow disk spill when OpenTelemetry tracing is enabled, and resume resend ticker immediately upon restoring cache entries on restart by @ngjaying in #4187 and #4186
  • MQTT: fix MQTT v5 client reconnect resubscription by ensuring SUBSCRIBE packets always include topic filters by @fl0-m in #4185
  • Cast: reject unterminated quoted time formats with explicit errors instead of panicking on trailing quotes, and preserve literal apostrophes in doubled quotes by @zjncs in #4124
  • Rule: serialize stop checks under rule lock to avoid nil-pointer panic during topology auto-exit and explicit stop races by @ngjaying in #4167
  • SQL: bound initial connection and lookup dial attempts to 10s to prevent blocking rule and lookup lifecycle operations by @Yisaer in #4155 and @ngjaying in #4161
  • SQL: make SQL source, lookup, and sink database operations responsive to rule cancellation via context propagation by @Yisaer in #4147
  • Startup: retry transient database write errors during startup init.json import up to 3 times before deferring initialization marker by @ngjaying in #4151
  • Planner: resolve unqualified references to preceding direct SELECT field aliases in schema-less streams by @ngjaying in #4137
  • Log: avoid oversized rule parse errors by reporting input byte size and SHA-256 fingerprint instead of full SQL/JSON dumps by @ngjaying in #4134
  • XSQL: guard against nil dereference panic during empty join lookup when projection discards source fields by @Hanabi9248 in #4136

Performance

  • Defer sink property template evaluation to once per batch in slice mode with batching sinks by @ngjaying in #4148
  • Pre-size slice tuple sink content with row field capacity to eliminate incremental slice reallocations in projections by @ngjaying in #4149

Dependencies and Chores

  • Bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp from 1.43.0 to 1.45.0 by @dependabot[bot] in #4152
  • Test: fix flaky TestRule race condition in server tests by @ngjaying in #4175

New Contributors