Skip to content

Releases: yaop-labs/amber

v0.3.0

17 Jun 00:08
10d6e7a

Choose a tag to compare

Performance

Metrics engine

  • Resident compact block index (columnar fields + dictionary labels), removing repeated directory
    decodes and label-string allocations.
  • Series-partitioned parallelism for range-step queries across workers.
  • Streamed exact path for dense-block queries; bulk read of the chunk section instead of one ReadAt per
    series.
  • Binary block directory, byte-budgeted directory cache, range-step scratch reuse.
  • Stats is now O(blocks) via manifest sample counts; catalog REGISTER records batched behind one commit
    wait.

Index / FTS

  • Replaced roaring with sorted-slice bitmap sets (ULID keys shattered roaring containers).
  • Posting-list FTS format replaces the radix snapshot (38MB to 5MB per segment).
  • pread-backed token lookups, df==1 tokens in a flat hash section, arena-backed seal build state.

Storage / Query

  • 512KiB blocks with footer v3 per-block time bounds to prune reverse-window scans.
  • pread-based segment scans; shared readers no longer serialize.
  • Bitmap prefilter for multi-value service/host/level filters; result-cache invalidation scoped to the
    ingest batch time range.

Durability and correctness

  • Binary WAL with series/sample records and a flush gate against acked-sample loss.
  • Fail-stop WAL/segment/catalog writers after fsync or partial-write errors; WAL CRC covers length and
    sequence.
  • Recovery: truncate the uncheckpointed active segment to avoid replay duplication; heal orphan segments
    from the create/saveMeta crash window.
  • Histogram sketches unified into the main store; crash-safe histogram compaction with marker recovery.

Features

  • rate_range endpoint exposing per-step range rates for metrics.
  • MemoryLimit option setting the Go soft memory limit at open.
  • db.Flush durability barrier and data-dir locking.

Benchmarks

  • New obsbench harness: datagen, ingest loadgen, memory sampler, preflight.
  • Log scenarios Q1-Q4 and metrics scenarios QM1-QM4 (OTLP) with result-count equality gates.
  • kill -9 durability-loss orchestration and queryable-count verification.

Other

  • Documentation across all packages (model, storage, index, query, ingest, metricsengine, api/http,
    runtime).
  • CI pipeline with static checks gating build and test.
  • README updated with campaign medians; lint cleanup and go mod tidy.

v0.2.0

24 May 15:11

Choose a tag to compare

v0.2.0

Features

  • Public embed API: amber.Open, Options, Cardinality, S3 config — stable surface for embedding amber into another binary.
  • S3 segment tiering: SegmentStore interface with LocalStore and S3Store implementations, automatic upload on seal.
  • Posting list index for trace_id — replaces bitmap for high-cardinality fields.
  • Ribbon filter for segment-level pruning.
  • Cardinality guard: caps attrs per entry, attr value length, and unique keys per service.
  • Circuit breaker rejects writes after consecutive batch failures.
  • Prometheus /metrics endpoint with ingest and WAL counters (hand-rolled exporter, no client_golang dependency).
  • /readyz gate and per-request size limits on the HTTP API.
  • Timing-safe API key comparison, gated pprof.

Performance

  • Zero-copy block scan: ~100k allocations -> ~40 per segment scan.
  • processBatch allocations halved via metric handles and zstd encoder reuse.

Bug fixes

  • Segment header is now fsynced before WAL replay (fixes zero-byte segment after crash).
  • WAL replay caps per-record size and surfaces corruption events.
  • Writer state and activeSize correctly restored after restart.
  • Atomic index writes; WAL checkpoint durability.
  • Rotation no longer reopens readers; retention sort fixed; seal retry on failure.

Tests

  • Real SIGKILL chaos test for WAL recovery (subprocess + atomic marker).
  • Contract test for the public embed API (amber_example_test.go).
  • White-box benchmarks for query, ingest, storage, and indexer paths.
  • 10M-record self-tracking benchmark (loadbench) with write/memory/read metrics.
  • Metrics exporter coverage: counters, escaping, exposition format.

Tooling

  • loadbench, lokibench, vlbench, httpbench — apples-to-apples benchmarks against Loki and VictoriaLogs over HTTP.
  • lefthook pre-commit and pre-push hooks (gofmt, govet, golangci-lint, tests).

v0.1.20

07 May 18:53
cd5a574

Choose a tag to compare

  • fix stale segment metadata after retention cleanup
  • return explicit overload failures when ingest queue is full
  • improve OTLP/HTTP ingest rejection handling
  • add regression tests for traces, ingest, and retention

v0.1.19

28 Apr 16:53

Choose a tag to compare

  • alpha version amber