Skip to content

Changelog

1.21.0(2026/10/14)

New Features

  • Added an OCSF ingestion endpoint that supports batch data and writes to the ocsf log index (#120)

Bug Fixes

  • Fixed an issue where invalid aggregation parameters could cause abnormal process behavior (#117)
  • Fixed an issue where stalled uploads occupied concurrency slots for a long time, and proxy response status codes were incorrect (#118)

Improvements

  • Improved HTTP timeout control to prevent stalled requests from occupying resources for a long time (#118)
  • Unified log token masking: retain the first 8 characters and the last 4 characters; short tokens are fully hidden (#121)

Compatibility Notes

  • Downstream 4xx responses retain the original status code. If the error body cannot be parsed, {} is returned instead of changing it to 500 (#124)

1.20.0(2026/09/10)

New Features

  • Added an HTTP concurrency limit before reading the request body, reusing kodo_queue.workers (DW_KODO_QUEUE_WORKERS, default 256). When the limit is reached, up to 128 additional requests can wait for at most 1s. This limit remains in effect when the Kodo dispatch queue is disabled; requests without a body are not counted (#115)
  • Added dataway_http_concurrency_in_flight, dataway_http_concurrency_waiting, dataway_http_concurrency_requests_total, and dataway_http_concurrency_wait_seconds metrics to observe the number of in-flight requests, waiting requests, admission results, and waiting time (#115)

Bug Fixes

  • Fixed a compatibility issue with Langfuse SDK 4.x in /api/public/ingestion when the upstream succeeds but returns an empty response body: now returns successes/errors JSON for each event ID in the request batch and preserves the upstream JSON response content when present (#116)

Compatibility Notes

  • When the HTTP concurrency waiting queue is full or the wait times out, registered DataKit-compatible endpoints return 503, other endpoints return 429, and both include Retry-After: 1; rejected requests are not written to the disk cache (#115)
  • When an HTTP/1.x request is rejected by the concurrency limit, reading of the remaining body is stopped and the connection is closed after the response is returned, avoiding waits for incomplete uploads; clients must establish a new connection when retrying (#115)

1.19.0(2026/08/27)

New Features

  • Added the /v2/tail_sampling zstd reporting endpoint, and made it compatible with zstd packets sent by DataKit 2.10 via /v1/tail_sampling without a compression negotiation header (#110)
  • Added bounded batch sending and failure retry for tail-sampling retained data, changed memory overflow spill-to-disk to asynchronous processing, and improved restart recovery and exit cleanup mechanisms (#110)

Improvements

  • Tail sampling now extracts trace_id after decompression and recomputes predicates; gzip compression is used when sending batches downstream to reduce request count and transfer overhead (#110)
  • Improved runtime metric coverage for tail sampling, including queue submission results, waiting time, disk depth, and batch processing status (#110)

Security and Observability

  • Set the token label in metrics to a fixed value of redacted and no longer retain original token fragments, avoiding credential leakage and high-cardinality time series (#90)
  • Masked aggregation, tail sampling, and multi-backend forwarding errors so that backend URLs, response content, and authentication information are no longer exposed (#90)

1.18.0(2026/08/12)

Improvements

  • Optimized the trace_id extraction path in tail sampling to avoid repeated payload traversal when RawGroupId is available, while keeping sampling behavior unchanged (#108)
  • Upgraded cliutils: capacity metrics are automatically initialized when the disk cache is enabled, and shutdown and file-lock release behavior was improved (#111)

Bug Fixes

  • Unified token validation and passing semantics for the Aggregate and Tail Sampling special APIs (#88)
  • Isolated the invalid-token negative cache by token, write route, and main/headless mode to prevent false blocking across scenarios (#106)
  • Fixed concurrent access issues in the failure cache and tail-sampling disk fallback path to avoid data races during disk queue initialization, reading, and closing (#111)
  • Isolated the pprof and Prometheus HTTP muxes; pprof is disabled by default, and when enabled it only listens on loopback, with limits on diagnostic request duration and concurrency (#89)
  • Masked tokens, credentials, global labels, and rule contents in request forwarding, cache replay, aggregation, tail sampling, and Sinker logs (#104)
  • Fixed system Workspace URL detection and added regression coverage for token injection in normal and cascading modes (#104)
  • Corrected the main HTTP server request header timeout, Gin mode, IP blacklist configuration example, and API wrapper error handling (#104)

Security and Observability

  • Pinned the Go and golangci-lint download archives used by CI, verified SHA-256 checksums per architecture, and removed the direct execution path of remote installation scripts (#101)
  • Updated the default DataWay dashboard with additional monitoring for queues, tail sampling, Sinker cache, and runtime (#85)

1.17.0(2026/07/14)

New Features

  • Added OTLP HTTP/protobuf endpoints: /otel/v1/traces, /otel/v1/metrics, and /otel/v1/logs (#81)
  • OTLP requests support query token, X-Token, and Bearer token, and are integrated with the Kodo queue and disk cache (#81)
  • OTLP requests support passing through Kodo status codes, bodies, and required headers (#81)

Improvements

  • Improved Sinker routing for aggregation and tail sampling: a send failure in one group no longer affects other groups (#71)
  • The invalid-token negative cache now only applies to eligible write requests (#77)
  • Optimized memory usage and concurrency stability of aggregation
  • Optimized tail-sampling backlog handling: data can be temporarily stored to disk when the in-memory queue is full
  • Improved stability under abnormal disk cache scenarios

Bug Fixes

  • Fixed race condition and capacity issues in the Sinker rule cache (#93)

Observability

  • Added file descriptor metric dataway_open_files_by_type and TCP metric dataway_tcp_connections
  • Added metrics for tail sampling, send queues, workers, and disk spooling

1.16.1(2026/07/09)

Bug Fixes

  • /v1/write/rum now rejects empty bodies and returns 400 with dataway.emptyBody; non-empty bodies are still forwarded as-is (#82)
  • When the Kodo queue is full, cacheable requests are written to disk; returns 503 when cache is unavailable (#83)
  • Returns cached only after a successful write, and improved logging of cache failure reasons (#83)

1.16.0(2026/07/02)

New Features

  • Added IPv6 and dual-stack deployment support; the IP allowlist supports IPv4, IPv6, and CIDR (#79)
  • Added bind_ipv6/DW_BIND_IPV6 and trusted_proxies/DW_TRUSTED_PROXIES configuration (#78, #79)

Improvements

  • When the Kodo success response is empty, an empty body and Content-Type are no longer returned (#78)
  • CORS headers are now returned only for requests with an Origin header, and X-Content-Type-Options: nosniff was added to forwarded responses (#78)

1.15.0(2026/05/27)

New Features

  • Added a bounded Kodo queue covering write, upload, and Firehose requests
  • The queue is enabled by default and supports DW_KODO_QUEUE_* environment variables
  • Cacheable requests are cached when the queue is full. Returns 503 when cache is unavailable
  • Added invalid-token negative caching, supporting DW_TOKEN_NEGATIVE_CACHE_* environment variables
  • The negative cache has a default TTL of 5m and stores up to 1000 tokens

Improvements

  • Added token and payload validation to the aggregation endpoint
  • Aggregation sends now use a background queue, support 3 retries, and include Content-MD5
  • The aggregation proxy now reuses the reverse proxy and validates related configuration
  • Cache replay now uses the current remote_host; the default cleanup interval was changed to 1s
  • Updated Sinker documentation. As of DataKit 2.0.0, non-point write APIs generally do not require the __dataway_api rule

Observability

  • Added Kodo queue metrics: dataway_kodo_queue_wait_seconds, dataway_kodo_queue_depth, dataway_kodo_queue_bytes, dataway_kodo_queue_enqueued_total, dataway_kodo_queue_full_total, dataway_kodo_queue_dispatch_total
  • Added invalid-token negative cache metrics: dataway_token_negative_cache_added_total, dataway_token_negative_cache_blocked_total
  • Added aggregation/tail sampling metrics: dataway_http_api_body_size_bytes_total, dataway_http_aggr_point_total, dataway_http_tail_sampling_trace_total, dataway_http_tail_sampling_span_total, dataway_http_tail_sampling_packet_send_total
  • Added disk cache lock contention metrics: diskcache_lock_wait_seconds, diskcache_lock_contention_total
  • Fixed the sinked label of latency metrics in Sinker scenarios

1.14.0(2026/04/17)

  • Added a Session Replay image processing endpoint

1.13.0(2026/04/10)

  • Added support for DataWay bypass aggregation and sampling (#67)

1.12.3(2026/03/26)

  • Added the v2 Sinker header format to resolve HTTP standard violations caused by invalid numeric values in routing headers (#68)

1.12.2(2026/03/17)

  • Updated the SSL certificate in the DataWay image to avoid the failure to recognize the Openaway SSL certificate in cascading scenarios (#69)

1.12.1(2025/12/25)

  • Fixed an issue in 1.12.0 where Sinker routing could not replicate requests (#66)

1.12.0(2025/12/19)

New Features

  • Optimized the Sinker caching mechanism (#34)
    • The new Sinker cache stores data based on the request's hash fingerprint (16 bytes) rather than the full request characteristics. It uses two-way hashing to minimize hash collisions; theoretically, the collision probability is n/2^128, where n is the number of cached keys
    • The Sinker cache now has TTL and capacity mechanisms to further bound memory usage: the TTL mechanism cleans up inactive cache entries, while the capacity mechanism ensures that the number of cache keys does not exceed the specified limit. The TTL and capacity limits further reduce the hash collision probability mentioned above
  • Added a configuration option to optimize the HTTP headers returned by DataWay, reducing DataWay public network traffic (#65)

1.11.2(2025/11/25)

  • Optimized the HTTP requests DataWay forwards to Kodo (#64)

1.11.1(2025/11/15)

  • Fixed an issue where the __internal__ token was invalid (#63)

1.11.0(2025/11/12)

New Features

  • Upgraded the DataWay base image to Ubuntu 22.04 (#62)
  • DataWay now supports blocking invalid traffic (#61)

Bug Fixes

  • Fixed an issue where Session Replay and Profiling routing could not copy data to different Workspaces (#59)

1.10.0(2025/09/03)

New Features

  • Added Langfuse data ingestion (#57)

1.9.0(2025/04/25)

New Features

  • DataWay now adds X-Pkg-Id to data upload requests for data tracing (#53)
  • Improved application logs; more error codes returned by Kodo are now passed through to DataKit (#52)
  • Added environment variables for API self-pull (#55)
  • Updated the disk cache code to diagnose invalid argument errors that occur in some cases (#56)

1.8.0(2025/02/19)

New Features

  • When Sinker mode is enabled, DataWay now also handles data reporting requests from clients such as DataKit/Function (#50)

1.7.0(2024/12/18)

New Features

  • Added an AWS Firehose ingestion endpoint (#47)
  • Added support for passing tokens via X-Token (#43)

Improvements

  • Adjusted the default parameters for internal memory reclamation to optimize memory usage (#49)
  • Optimized the default YAML for Kubernetes deployment and adjusted the cache disk mount configuration (#48)
  • Adjusted and added some internal metrics, and updated the default DataWay dashboard

1.6.2(2024/12/03)

Improvements

  • Added HTTP-level connection configuration options (#46)

1.6.1(2024/11/19)

Improvements

  • Added an option to disable the 404 page (#44)

1.6.0(2024/09/19)

Improvements

  • Optimized the environment variable configuration related to the disk cache
  • Exposed more self metrics and optimized memory usage in the HTTP forwarding layer (#39)
  • DataWay now supports configuring its own SNI (#42)
  • Added a time synchronization endpoint so DataKit can obtain more accurate Unix timestamps (#40)
  • Sinker:
    • Filter conditions now support nil checks, that is, determining whether a specific field exists (#41)
    • Added default rule configuration: requests that do not match any existing routing rule are routed to the Workspace corresponding to the default rule (#30)

1.5.0(2024/07/05)

Improvements

  • Optimized the installation script (#33)

Compatibility Adjustments

  • The new version removes the ability to configure Sinker directly in host installation mode. This feature will be supported in a new way in a future release.

1.4.1(2024/06/19)

  • Fixed an issue where DW_ENABLE_TLS was missing in Kubernetes installation mode
  • Changed the build image address

1.4.0(2024/05/15)

  • Added a DataKit metering endpoint (#29)
  • Fixed an issue where the cache could lose data (#31)
  • Added support for configuring HTTP TLS certificates directly on DataWay (#32)
  • Exposed more metrics

1.3.9(2024/03/28)

  • When Sink discards a request, an HTTP 406 Not Acceptable error is now returned to facilitate troubleshooting (#82)

1.3.8(2024/01/24)

  • Exposed more metrics
  • Significantly improved Sinker rule matching performance (#26)

1.3.7(2023/12/14)

  • Exposed more metrics
  • Optimized the disk cache cleanup strategy to adopt a consume-as-soon-as-possible principle:
    • Avoid proactive data drops caused by storage limits
    • Also send cached data as early as possible
  • Added observability for oversized request drops (metrics/logs)
  • Adjusted the DataWay Pod YAML to improve its metric and log collection

1.3.6(2023/10/24)


1.3.5(2023/09/13)


1.3.4(2023/09/01)

  • Upgraded Golang to 1.9
  • Fixed an issue where the inner token produced no data
  • Adjusted the following settings in the default configuration:
    • Default API rate limit increased to 100K
    • Default maximum body size increased to 64MB
    • Added HTTP timeout settings (DataWay to the central platform), default 30s
    • Added configuration to ignore TLS x509 errors

1.3.3(2023/09/01)

  • Fixed the curl packaging issue in the image

1.3.2(2023/08/30)

  • Added the curl command to the image for easy inspection of its own metrics

1.3.1(2023/08/28)

  • Added URL-based Sinker support

1.3.0(2023/08/24)

  • Refactored the entire DataWay implementation and added Sinker functionality

1.2.12(2023/08/28)

  • Refactored the CI release process to support dual release of the install script

1.2.8(2022/09/18)

  • /v1/wirte endpoint updates:
    • Removed redundant /v1/write/xxx APIs and added the /v1/write/:category endpoint
    • Write data is no longer decoded as line protocol, but the body is still read for signing
  • Disk cache:
    • When sending to the central platform fails during cache cleanup, a consumption pause policy was added so that the current cached request must be sent successfully before the next cache entry is cleaned
    • Updated the pbcache proto file

Feedback

Is this page helpful?