Changelog¶
1.19.0 (2026/08/27)¶
New Features¶
- New
/v2/tail_samplingzstd reporting endpoint, compatible with the uncompressed negotiation header zstd packet sent by Datakit 2.10 via/v1/tail_sampling(#110) - Added bounded batch sending and failure retry for retained data in tail sampling; changed out-of-memory fallback to disk to asynchronous processing, and improved restart recovery and shutdown finalization mechanisms (#110)
Optimizations¶
- Tail sampling extracts
trace_idafter decompression and re-evaluates predicates; downstream batch sends use gzip compression to reduce request count and transmission overhead (#110) - Improved metric coverage for tail sampling queue submission results, wait duration, disk depth, and batch processing status (#110)
Security and Observability¶
- Fixed the token label in metrics to
redacted; no longer retains original token fragments to avoid credential leakage and high-cardinality time series (#90) - Redacted error messages in aggregation, tail sampling, and multi-backend forwarding; no longer exposes backend URLs, response content, or authentication information (#90)
1.18.0 (2026/08/12)¶
Optimizations¶
- Optimized the
trace_idextraction path in tail sampling to avoid redundant payload traversal whenRawGroupIdis available, while maintaining unchanged sampling behavior (#108) - Upgraded
cliutils; disk cache automatically initializes capacity metrics when enabled, and improved shutdown and file lock release behavior (#111)
Bug Fixes¶
- Unified token validation and passing semantics for Aggregate and Tail Sampling special APIs (#88)
- Isolated invalid token negative cache by token, write route, and main/headless mode to prevent cross-scenario false blocking (#106)
- Fixed concurrent access issues in the failure cache and tail sampling disk fallback path, eliminating data races during disk queue initialization, reading, and shutdown (#111)
- Isolated pprof and Prometheus HTTP mux; pprof is disabled by default, and when enabled, only listens on loopback, with restrictions on diagnostic request duration and concurrency (#89)
- Redacted token, credentials, global tags, and rule content from logs of request forwarding, cache replay, aggregation, tail sampling, and Sinker (#104)
- Fixed system workspace URL determination and added regression validation for token injection in normal and cascading modes (#104)
- Corrected main HTTP Server request header timeout, Gin mode, IP blacklist configuration examples, and API wrapper error handling (#104)
Security and Observability¶
- Fixed Go and golangci-lint download packages used in CI; verified SHA-256 by architecture, and removed the direct execution path of remote installation scripts (#101)
- Updated DataWay default dashboard to add queue, tail sampling, Sinker cache, and runtime monitoring (#85)
1.17.0 (2026/07/14)¶
New Features¶
- New 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, body, and necessary headers (#81)
Optimizations¶
- Optimized Sinker splitting for aggregation and tail sampling; a failure in one group no longer affects other groups (#71)
- Invalid token negative cache only applies to qualified write requests (#77)
- Optimized memory usage and concurrency stability of aggregation
- Optimized tail sampling backlog handling; when the in-memory queue is full, data can be temporarily stored to disk
- Improved stability under disk cache anomaly scenarios
Bug Fixes¶
- Fixed race condition and capacity issues in the Sinker rule cache (#93)
Observability¶
- New file descriptor metric
dataway_open_files_by_typeand TCP metricdataway_tcp_connections - New metrics for tail sampling, send queue, worker, and disk staging
1.16.1 (2026/07/09)¶
Bug Fixes¶
/v1/write/rumrejects empty bodies and returns400withdataway.emptyBody; non-empty bodies are still forwarded as-is (#82)- When the Kodo queue is full, cacheable requests are written to disk; returns
503when cache is unavailable (#83) - "Cached" is only returned after a successful write, and the recording of cache failure reasons is improved (#83)
1.16.0 (2026/07/02)¶
New Features¶
- Added IPv6 and dual-stack deployment support; IP whitelist supports IPv4, IPv6, and CIDR (#79)
- New
bind_ipv6/DW_BIND_IPV6andtrusted_proxies/DW_TRUSTED_PROXIESconfiguration options (#78, #79)
Optimizations¶
- When the Kodo successful response is empty, no longer returns an empty body and
Content-Type(#78) - CORS headers are returned only for requests with
Origin; addedX-Content-Type-Options: nosniffto forwarding responses (#78)
1.15.0 (2026/05/27)¶
New Features¶
- Added Kodo bounded queue, covering write, upload, and Firehose requests
- Queue is enabled by default and supports
DW_KODO_QUEUE_*environment variables - When the queue is full, cacheable requests are cached; returns
503when cache is unavailable - Added invalid token negative cache, supporting
DW_TOKEN_NEGATIVE_CACHE_*environment variables - Default TTL for negative cache is
5m, with a maximum of1000tokens
Optimizations¶
- Added token and payload validation to the aggregation endpoint
- Aggregation sending uses a background queue with 3 retries and added
Content-MD5 - Aggregation proxy reuses the reverse proxy and validates related configurations
- Cache replay uses the current
remote_host; default cleanup interval changed to1s - Updated Sinker documentation. Starting from DataKit 2.0.0, non-point write APIs generally do not require
__dataway_apirules
Observability¶
- New Kodo queue-related 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 - New invalid token negative cache metrics:
dataway_token_negative_cache_added_total,dataway_token_negative_cache_blocked_total - New aggregation/tail sampling-related 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 - New disk cache lock contention metrics:
diskcache_lock_wait_seconds,diskcache_lock_contention_total - Fixed the
sinkedlabel in latency metrics under Sinker scenarios
1.14.0 (2026/04/17)¶
- Added session replay image processing endpoint
1.13.0 (2026/04/10)¶
- Added DataWay sidecar aggregation and sampling support (#67)
1.12.3 (2026/03/26)¶
- Added v2 Sinker header format to resolve HTTP standard violations caused by abnormal values in split headers (#68)
1.12.2 (2026/03/17)¶
- Updated DataWay image SSL certificates to avoid failure to recognize Openaway SSL certificates in cascading scenarios (#69)
1.12.1 (2025/12/25)¶
- Fixed the inability to copy requests in Sinker splitting in version 1.12.0 (#66)
1.12.0 (2025/12/19)¶
New Features¶
-
Optimized Sinker cache mechanism (#34)
- The new Sinker cache mechanism caches requests based on their hash signature (16 bytes) instead of the entire request signature. Two-way hashing is used to minimize hash collisions. The theoretical collision probability is n/2^128, where n is the number of cached keys.
- Added TTL and capacity mechanisms to the Sinker cache to further limit memory usage: the TTL mechanism purges inactive cache entries, while the capacity mechanism ensures the number of cached keys does not exceed the specified limit. Both TTL and capacity further reduce the hash collision probability mentioned above.
-
Added configuration optimization for DataWay HTTP header responses to reduce DataWay public network traffic (#65)
1.11.2 (2025/11/25)¶
- Optimized DataWay HTTP requests forwarded to Kodo (#64)
1.11.1 (2025/11/15)¶
- Fixed
__internal__token invalidity issue (#63)
1.11.0 (2025/11/12)¶
New Features¶
- Upgraded DataWay base image to Ubuntu 22.04 (#62)
- DataWay supports blocking invalid traffic (#61)
Bug Fixes¶
- Fixed session replay and profile splitting not copying data to different workspaces (#59)
1.10.0 (2025/09/03)¶
New Features¶
- Added Langfuse data ingestion support (#57)
1.9.0 (2025/04/25)¶
New Features¶
- DataWay adds
X-Pkg-Idto data upload requests for data tracing (#53) - Improved program logs; more error codes returned by Kodo are now passed through to DataKit (#52)
- Added API to pull environment variables autonomously (#55)
- Updated disk cache code to locate the
invalid argumenterror that occurs in some cases (#56)
1.8.0 (2025/02/19)¶
New Features¶
- When DataWay Sinker mode is enabled, it now supports simultaneously processing data upload requests from clients such as DataKit/Function (#50)
1.7.0 (2024/12/18)¶
New Features¶
- Added AWS Firehose ingestion endpoint (#47)
- Supports passing token via
X-Token(#43)
Optimizations¶
- Adjusted default parameters for internal recycling to optimize memory usage (#49)
- Optimized default YAML for Kubernetes deployment; adjusted disk cache mount configuration (#48)
- Adjusted and added some internal metrics; updated DataWay default view
1.6.2 (2024/12/03)¶
Optimizations¶
- Added HTTP-level connection configuration entry (#46)
1.6.1 (2024/11/19)¶
Optimizations¶
- Added option to disable the 404 page (#44)
1.6.0 (2024/09/19)¶
Optimizations¶
- Optimized environment variable configuration related to disk cache
- Added more self-metrics exposure, and optimized memory usage at the HTTP forwarding layer (#39)
- DataWay supports configuring its own SNI (#42)
- Added a time synchronization endpoint for DataKit to obtain a relatively accurate Unix timestamp (#40)
- Sinker:
- Filter conditions support
niljudgment, i.e., determining whether a specific field exists (#41) - Added default rule setting, where requests that do not match existing splitting rules are routed to the workspace of the default rule (#30)
- Filter conditions support
1.5.0 (2024/07/05)¶
Optimizations¶
- Optimized installation script (#33)
Breaking Changes¶
- The new version removes the ability to directly configure Sinker in host installation mode. This feature will be supported in a new way in the future.
1.4.1 (2024/06/19)¶
- Fixed missing
DW_ENABLE_TLSin Kubernetes installation mode - Changed build image address
1.4.0 (2024/05/15)¶
- Added DataKit metering endpoint (#29)
- Fixed potential data loss in cache (#31)
- Supports configuring HTTP TLS certificates directly on the DataWay side (#32)
- Exposed more metrics
1.3.9 (2024/03/28)¶
- When Sink discards a request, returns HTTP
406 Not Acceptableerror for easier 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 disk cache cleanup strategy to follow the principle of immediate consumption:
- Avoid data being actively discarded due to storage limit
- Send cached data as early as possible
- Added observability related to oversized request discarding (metrics/logs)
- Adjusted DataWay POD yaml to improve metric and log collection
1.3.6 (2023/10/24)¶
- Added DataWay
sinkmanagement command
1.3.5 (2023/09/13)¶
- Under Kubernetes, supports installing DataWay via environment variables
- Newly published dataway.yaml
1.3.4 (2023/09/01)¶
- Upgraded Golang to 1.9
- Fixed inner token having no data issue
- Adjusted the following configurations in the default configuration:
- Default API rate limit increased to 100K
- Default max body size increased to 64MB
- Added HTTP timeout setting (DataWay to center), default 30s
- Added configuration to ignore TLS 509 errors
1.3.3 (2023/09/01)¶
- Fixed
curlissue in image packaging
1.3.2 (2023/08/30)¶
- Added
curlcommand in the image for easier self-metrics viewing
1.3.1 (2023/08/28)¶
- Added URL-based Sinker functionality
1.3.0 (2023/08/24)¶
- Refactored the entire DataWay implementation, adding Sinker functionality
1.2.12 (2023/08/28)¶
- Refactored CI release process to implement dual release of install scripts
1.2.8 (2022/09/18)¶
-
/v1/writeendpoint updates:- Removed redundant
/v1/write/xxxAPIs, added/v1/write/:categoryendpoint - Write data no longer undergoes line protocol decoding, but still reads the body for signature
- Removed redundant
-
Disk cache:
- When sending to the center fails during cache cleanup, added a consumption pause strategy; the next cache entry is cleaned only after the current cached request is successfully sent
- Updated pbcache proto file