• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Logflare / logflare / 0d5de0329ba4def66cb2302f075ab767c7701b02
80%

Build:
DEFAULT BRANCH: main
Ran 13 May 2026 07:05PM UTC
Jobs 1
Files 473
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

13 May 2026 06:52PM UTC coverage: 79.577% (+0.01%) from 79.567%
0d5de0329ba4def66cb2302f075ab767c7701b02

push

github

web-flow
perf(cleaner): flatten metadata without per-level intermediate lists (#3456)

* test(cleaner): cover empty-leaf, nested-list, and mixed-list flatten cases

The existing flatten/1 tests do not assert behavior around empty
containers at leaves (the docstring promises they are preserved as
values), nested lists, or lists with mixed element types. Add three
focused cases so any future rewrite has a behavioral fence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* perf(cleaner): build flatten map without intermediate nested lists

Rewrites MetadataCleaner.flatten/1 as an accumulator-passing tail recursion
that builds a single flat list of {key, value} pairs and finalizes with
:maps.from_list/1, replacing the Enum.flat_map / Enum.with_index pipeline
that allocated nested per-level lists plus an index-paired tuple list before
concatenation. Reverses the accumulator before :maps.from_list/1 so
duplicate-key collisions resolve identically to the previous
Map.new-over-traversal-order behavior.

Adds a focused profiling script to attribute flatten cost directly.

Focused flatten bench (Apple M5, median):
  otel trace                       800 → 440 reductions   (-45%)
  edge log    38.4 KB /  2,390  → 31.3 KB /  1,580        (-18% mem, -34% reductions)
  list heavy 202.6 KB / 13,930  → 156.5 KB /  9,430       (-23% mem, -32% reductions)

End-to-end LogEvent.make/2 bench (Apple M5, median):
  otel trace  80.6 μs /  31.29 K → 78.3 μs /  30.91 K  (-1.2% reductions)
  edge log   304.1 μs / 137.36 K → 298.0 μs / 136.67 K (-0.5% reductions)

Reduction-count deltas are deterministic; wall-time / memory differences
in LogEvent.make/2 sit within run-to-run noise (±8-12% deviation) on this
hardware. Flatten is a small share of the full make pipeline — proportional
wins land in the focused bench.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* refactor(cleaner): tighten flatten internals from review feedback

- Pattern matc... (continued)

16 of 17 new or added lines in 2 files covered. (94.12%)

12379 of 15556 relevant lines covered (79.58%)

5206.8 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
96.55
1.1% lib/logflare/logs/cleaner.ex
Jobs
ID Job ID Ran Files Coverage
1 0d5de0329ba4def66cb2302f075ab767c7701b02.1 13 May 2026 07:05PM UTC 473
79.58
GitHub Action Run
Source Files on build 0d5de0329ba4def66cb2302f075ab767c7701b02
  • Tree
  • List 473
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 0d5de032 on github
  • Prev Build on main (#77B85D07...)
  • Next Build on main (#F677E81F...)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc