Skip to content

Releases: msalinas92/CacheBolt

v0.7.1

18 Jul 01:12

Choose a tag to compare

Summary

This version introduces several reliability and compatibility improvements to the proxy, focused on HTTPS support, config robustness, and downstream interoperability.

Key Changes

  • HTTPS support without OpenSSL
    Migrated the HTTP client to use a Rust-native TLS backend (hyper-rustls or equivalent), removing the dependency on OpenSSL. This greatly improves build portability, especially for Alpine and musl-based containers, and eliminates the need for system OpenSSL libraries.

  • Robust config: path_rules is now optional
    Fixed a bug where omitting the path_rules section in config.yaml caused a panic or crash at startup. The config loader now defaults to an empty list if not specified, using only the default latency threshold when no rules are present.

  • Header filtering for downstream compatibility
    Requests forwarded by the proxy now exclude certain headers such as accept-encoding. This avoids issues with downstream servers that may not support compressed response streams (such as "Empty reply from server" errors), ensuring better compatibility with a broader range of HTTP backends.


Additional Improvements

  • Enhanced tracing and error reporting for debugging and operations.

v0.6.0

28 Jun 13:12
d19d4d3

Choose a tag to compare

🚀 CacheBolt v0.6.0 - Admin Port Separation & Config Enhancements

This release introduces multi-port server separation for better isolation between the proxy logic and the admin/metrics interface, along with configuration improvements that enhance maintainability and deployment flexibility.


✨ Features

🧩 Admin UI & Metrics on a Separate Port

CacheBolt now exposes the admin panel (/admin) and Prometheus metrics (/metrics) on a dedicated HTTP server and port, separate from the main proxy.

✅ Benefits:

  • Isolate internal endpoints from public traffic
  • Allow firewalled/internal-only access to admin tools
  • Enable separate monitoring via sidecars or scrape configs

🔧 Configuration (in config.yaml):

proxy_port: 3000     # Main proxy port
admin_port: 3001     # Admin UI and /metrics

v0.5.0

25 Jun 01:46
6b8e235

Choose a tag to compare

🚀 CacheBolt v0.5.0 — Client-Controlled Cache Bypass

✨ New Features

  • Header-based Cache Bypass
    Clients can now force bypass of all cache layers by including either of the following headers:
    • Cache-Control: no-cache
    • X-Bypass-Cache: true
      When present:
    • The cache is skipped (no memory or backend read).
    • The response is still stored unless explicitly disabled.
    • Useful for debugging, cache revalidation, or time-sensitive requests.

📈 Observability

  • Added log:
    ⏩ Cache bypass activated for '/path' due to client header
  • New Prometheus metric:
    cachebolt_bypass_cache_total

🛠️ Internal Improvements

  • Normalized ignored_headers now includes bypass-related headers to avoid polluting cache keys:
    • cache-control
    • x-bypass-cache
    • x-refresh-cache

v0.4.2

17 Jun 02:03

Choose a tag to compare

Fix to the version v0.4.0

v0.4.0

16 Jun 23:58
67ea4b6

Choose a tag to compare

This release introduces a lightweight and elegant Web UI to inspect the in-memory cache of CacheBolt. It's built as a static site and intended as a minimal dashboard for visibility and inspection.

✨ Features

🌐 Web Admin Panel (/cb-admin)

  • Built using Astro
  • Zero backend dependencies – purely static frontend

🗂️ Structure

  • Accessible at: /cb-admin
  • Custom styling with no UI frameworks for maximum performance

v0.3.1

16 Jun 01:32
36aa67d

Choose a tag to compare

Added

  • GET /admin/status-memory: new endpoint to inspect in-memory cache entries. Returns key, path, inserted_at, size_bytes, and expires_in_secs.
  • TTL-based expiry metadata is now computed and exposed from memory cache entries using cache.ttl_secs from config.

Changed

  • Moved cache invalidation endpoint from DELETE /cache to DELETE /admin/cache for consistency with admin operations.
  • Cleaned up redundant timeout logic in proxy layer. Latency-based failover now exclusively relies on latency_failover rules from the config.

Fixed

  • Corrected config field inconsistencies to ensure TTL and memory thresholds are parsed and enforced properly.

v0.3.0

13 Jun 17:27
285fc6c

Choose a tag to compare

✨ Features

  • Probabilistic Cache Refreshing (cache.refresh_percentage)
    • New configuration option under the cache section:
      cache:
        refresh_percentage: 10
    • Allows a percentage of requests to bypass the cache and fetch a fresh response from the backend.
    • Example: 10 means ~1 in every 10 requests to the same key will force a refresh.
    • Helps prevent stale data and reduces the need for manual invalidation.
    • Automatically re-stores the refreshed result in memory and persistent storage.

🐛 Fixes

  • Fixed handling of root path /
    • The proxy now correctly forwards requests to / (previously may have failed or misrouted).
    • Fully compatible with downstream services expecting root-level access.

📊 Metrics & Internals

  • Added debug logs and counters for refresh-triggered requests.
  • cachebolt_memory_hits_total no longer counts requests that triggered a refresh.
  • Refresh logic respects concurrency limits and latency-based failover rules.

🔄 Behavior

  • If refresh_percentage is set to 0 or omitted, the cache will behave deterministically (no automatic refresh).
  • Refresh logic is key-specific and probabilistic based on request counts.

v0.2.0

11 Jun 01:40
9006592

Choose a tag to compare

📦 CacheBolt v0.2.0 (2025-06-11)

✨ Added

  • Global cache invalidation via DELETE /cache?backend=true
    • Clears all in-memory entries
    • Deletes all objects from the configured persistent backend (S3, GCS, Azure, Local)
  • Support for structured JSON error responses on invalid query usage
  • Prometheus metrics now reflect full deletion operations when backends are flushed

🔧 Changed

  • Removed pattern-based deletion from the /cache endpoint
    • Simplified the behavior: you now either clear everything, or nothing
    • Backend deletion only triggers if ?backend=true is explicitly set

📝 Documentation

  • Updated README.md:
    • Added new section: 🧹 Cache Invalidation
    • Described usage of DELETE /cache?backend=true and example scenarios

🧪 Internal

  • Improved logging around deletion success/failure per storage provider
  • Hardened concurrency and error handling in backend deletion routines

🚀 CacheBolt continues to evolve as a high-performance reverse proxy with multi-cloud caching support.

v0.1.0

11 Jun 01:39
202572a

Choose a tag to compare

Merge pull request #3 from msalinas92/feature/prometheus-metrics

feat: prometheus-metrics