Skip to content

Latest commit

History

History
321 lines (158 loc) 路 20.5 KB

File metadata and controls

321 lines (158 loc) 路 20.5 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Added

  • implement range-union collapsed forwarding for chunk requests (30f6b1f)

  • implement collapsed forwarding for object and chunk requests with tests (473e921)

  • add comprehensive Prometheus metrics across cache, proxy, server, and storage layers (#62)

Changed

  • use shared metrics namespace constant, update Go toolchain to 1.26 (38eb63e)

  • reorganize metrics into pkg/, add traces package, enhance iobuf (0fe04fe)

Documentation

  • overhaul README with comprehensive project overview (114e494)

  • add comprehensive Tavern CDN ecosystem documentation (e49479b)

Fixed

  • update caching middleware to handle cache bypass and improve error handling (#56)

  • resolve code review findings for collapsed forwarding (b324e5b)

  • improve collapsed forwarding tests and fix race conditions (5d2832c)

  • add panic recovery in object and chunk flight groups to prevent goroutine leaks (ddd666d)

Fixed

  • return valid Caching struct on preCacheProcessor error to avoid nil dereference (bb2191b)

  • use c.ctx instead of req.Context() in revalidate DiscardWithMessage for correct request ID (f8df9a2)

  • prevent double-skip in revalidate path by clearing fillRange context before lazyRespond (10e0bfb)

  • prevent double-close in partsReader by advancing index after Close (269cd3a)

  • clear metadata chunks during cache revalidation and add tests for revalidation logic #53 (#54)

Added

  • add protocol code generation and update caching logic with new protocol constants (684e623)

  • introduce iobuf.NopCloser for optional close operations, update dependencies (#50)

  • Implement smoothed requests per second (RPS) calculation and display in the top command, and improve plugin shutdown logic. (#43)

  • enhance TopK output with object details and update top command display logic, and rename qs plugin API paths (9cfc0b2)

  • implement real-time monitoring for QS plugin via SSE and introduce ttop command with enhanced hot key details. (df37a4c)

  • implement TopK functionality for LRU cache and storage buckets, integrating it into the QS plugin for hot URL tracking and on-demand metric collection. (c14ff51)

  • add CPU and memory usage metrics to QsPlugin (b8db396)

  • implement request smoothing and add metrics endpoint (f4623a8)

  • implement object migration for memory and disk buckets and correct DBPath in disk migration tests. (#40)

  • Add Touch method to storage buckets for updating object access metadata and integrate it into the caching middleware. (4c8a3b8)

  • promote support (21b0615)

  • introduce storage migration functionality with configurable promote and demote policies. (8fc91b6)

  • Introduce flag constants and enable conditional caching of error responses using FlagOn. (#39)

  • replace md5 with xxhash (36378e1)

  • add Tavern service unit file for systemd integration (0358581)

  • replace example-plugin with qs-plugin and update related functionality (b188143)

  • add Grafana dashboard template.json (915cd93)

  • add Prometheus metrics for purge request tracking (#35)

Changed

  • rename internal constants package to protocol and document internal headers. (6f21c37)

  • implement DirAware storage functionality with new sharedkv implementations and configuration. (c9c661c)

Documentation

  • Mark "Hot migration" and "Warm/cold split" as completed in READMEs (#41)

Fixed

  • PebbleDB and noneSharedKV Close idempotent using sync.Once. fix hot upgrade process (#51)

  • pass correct chunk index to checkChunkSize in getContents (7c7c5a0)

  • Ensure response body is always closed in async revalidation. fix #46 (#47)

  • close file descriptors in getContents error paths to prevent fd leaks (#45)

  • (Breaking Change) rename normal storage type to warm (#42)

  • test case config apply migration (34a8e28)

  • caching middleware's partRequest getUpstreamReader range request preparation. (#38)

  • add iobuf testcase (fdff4dd)

  • refactor savepart async reader, and chunkWriter close check (d434abc)

  • lru coverage; remove kv_pebble log (5208c71)

  • refactor getContents to improve find last hit block index. (8b7f3f1)

1.0.0 (2026-01-20)

Added

  • enhance DiscardBody function to support read speed limit and update related tests (#33)

  • save purge dir task to sharedkv and add design doc (658aecf)

  • enhance PathTrie to support generic key-value types and update related logic (dae0b1e)

  • implement marked storage with push-mark logic and directory purge enhancements (7264c52)

  • add Clone method for RequestMetric and NewContext function for context management (f1f1d71)

  • Implement fuzzy refresh middleware for caching (#31) (#31)

  • implement Hijack method in ResponseRecorder and enhance error handling for chunked responses (#32)

  • update mock server to use rate limiting (fbee3ce)

  • only cache GET/HEAD requests and discard RequestURI for proxy clients (46d36b9)

  • add tests for cache error codes and allowed methods (fa5136b)

  • add e2e tests (61f9034)

  • implement ByteRange parsing and handling for HTTP range requests (6f3a413)

  • implement graceful start and stop handling with SIGUSR2 support (abca883)

  • add DBPath configuration for storage buckets and implement NutsDB indexdb (9e7849b)

  • improve chunk handling (9ede226)

  • enhance ReadChunkFile to return chunk path (a2eeeae)

  • refactor bucket structure, add ReadChunkFile method (381c80c)

  • add WriteChunkFile method for bucket implementations (b5b95b1)

  • implement cache completion event handling and reporting (475dcd7)

  • enhance storage cleanup, add plugin for service domains (6d5526c)

  • improve HTTP vary handling (rfc7231#section-7.1.4) (569b891)

  • implement in-memory SharedKV store using Pebble; directory purge supports. (f607e70)

  • logger configuration with rotation settings and add runtime version http endpoint (a7389de)

  • add async SavepartReader (#17)

  • add LocalApiAllowHosts and fill range settings to server configuration (db30de2)

  • implement fill range processing and enhance chunk handling (076ce7f)

  • add Build function for chunk index generation (24e3bb0)

  • caching with slice-file support (5f01923)

  • add VaryProcessor for handling Vary headers in caching logic (88ff037)

  • integrate RequestID and improve access log handling (a20756c)

  • WIP: implement caching pool and reset functionality; add benchmark test (89d9d93)

  • plugin handling and configuration options (1388301)

  • add JSON marshalling for ID and metadata cloning logic (e67567a)

  • add support for configurable request collapse wait timeout (cb301bb)

  • add customizable logger with support for file-based output (e520d35)

  • support PURGE cache handler (c4bd2c1)

  • add FileChangedProcessor for file change detection and handling (10e43a2)

  • introduce prefetch processor for enhanced caching performance (7782db0)

  • caching with async range requests and add async reader utility (2e8fe8c)

  • add block-based bitmap utilities, range readers, and part reader implementations (b6588c8)

  • caching middleware with range request handling (1959cb9)

  • add SavepartReader and RangeReader implementations with associated tests (5d2820e)

  • add ResourceLocker interface and implement locking mechanism in caching middleware; enhance bucket interface with Path method (723ef93)

  • implement multi-range middleware with support for multi range requests (30d2644)

  • implement caching middleware with support for range requests and cache control parsing (564edb9)

  • add access logging, metrics, and query tool with usage documentation (5997cf2)

  • add access logging and pprof support with configuration options (20a779c)

  • implement discard methods and add unit tests for disk bucket (2162fc3)

  • disk bucket with improved metadata handling and path utilities (724cbd5)

  • disk bucket with LRU caching and async loading support (6aa7be0)

  • implement flexible storage layer with multiple backends (90d84d6)

  • implement a new proxy system with selector and singleflight support (b14a84e)

  • add serveMux handle (50e759b)

  • add transport plugin (4c7de80)

  • add caching middleware (3d8b4e9)

  • add prometheus register (50f8d87)

Changed

  • improve caching metrics CacheStatus in accesslog (#19)

  • simplify DiscardWithHash by delegating to discard method (0dcdeae)

  • update middleware options and remove deprecated config file (2b5d44e)

Documentation

  • update README.md with project banner, badges (18c5fd5)

  • update README with expanded feature list (94840a0)

Fixed

  • pathtrie typo (6eb1355)

  • update object size to use Content-Range when available and set Range header for HEAD requests (4accc28)

  • update end range calculation to use ObjectSize from Content-Range instead of Content-Length (39a380d)

  • cast totalSize to uint64 in ContentRange test for type consistency (5b99300)

  • closer conn check if the request is chunked and ensure that read are not at EOF, drop index metadata. (#30)

  • use request context in workerRequest cloning (b91bc02)

  • reorder import statements and uncomment sleep duration in Do method (#28)

  • int type, and test flag count=1 (7018736)

  • add e2e test config (8ec6133)

  • path to config file in Server step (676d860)

  • disable caching for error response codes (a5e80d7)

  • errcode skip caching and skip Method not HEAD/GET request (a790f67)

  • disk_test fix (a699574)

  • address code review comments - fix errors, nil checks, and goroutine leak (#22)

  • handle EOF error in io.Copy during response processing #21 (8e16950)

  • remove accept-encoding header when proxy request Fix #15 (#16)

  • preserve request copy headers to proxy request #11 (e26fb10)

  • handle nil response in duplicate request handling logic #6 (#9)

  • remove caching obj pool. (d9aa660)

  • clone() lost field BlockSize. (164a234)

  • prevent duplicate calls to onClose in savepartReader #3 (f8924e9)

  • .HasComplete() use BlockSize metadata to cache object (b274a61)

  • correct method name typos and introduce revalidation processor (d35658d)

  • listen serve addr (73da3ed)