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

Logflare / logflare / 37351260852-1
84%

Build:
DEFAULT BRANCH: main
Ran 05 Oct 2026 06:00PM UTC
Jobs 1
Files 481
Run time 1min
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

05 Oct 2026 05:49PM UTC coverage: 83.538% (-0.006%) from 83.544%
37351260852-1

push

github

web-flow
fix: optionally ack stale SpoolAck rows on sweep (#4077)

* Add optional ack-on-sweep for stale SpoolAck rows

A small, continuous trickle of events never reach a real ack (e.g. a
claim whose owner crashed before completing) and today just sit until
SpoolAck.sweep_stale/1 discards the ledger row without ever acking the
underlying queue message. A handful of these can cause a much larger
retry storm once the message redelivers.

sweep_stale/1 now atomically claims each stale row (ets.take, so it
can't race a legitimate in-flight ack) and, behind a new config flag
(ack_stale, default false), performs the real queue ack before
discarding it. Stopgap until the source of the missing acks is fixed --
meant to be disabled again once it is.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* feat: add SPOOL_ACK_STALE emergency lever, fix flaky SpoolAckTest

SPOOL_ACK_STALE env var (default false) toggles ack_stale at runtime via
the existing Env.get_boolean helper, without needing a redeploy — an
emergency lever for when everything starts retrying.

Also fixed the CI failure on this PR: SpoolAckTest's "nil handle ack/2
is a no-op" test was intermittently receiving an unexpected :ack_called
message. Root cause: consumer_pipeline_test.exs deliberately leaves a
failed_handle row in the shared, globally-named :spool_ack ETS table
(verifying a failed dispatch never acks). The new ack_stale: true sweep
test's sweep_stale(0) call sweeps the entire table regardless of
threshold, catches that leftover row too, and fires an extra unawaited
async queue-ack cast for it since ack_stale is now on. That cast can
land during any later, unrelated test, inheriting whatever Mimic stub
is active then. Fixed by clearing :spool_ack before and after every
test in this file, so it's immune to leaks from any other file
regardless of run order. Verified against the real leak across 25
random seeds.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: parse SPOOL_AC... (continued)

6 of 7 new or added lines in 1 file covered. (85.71%)

3 existing lines in 3 files now uncovered.

16031 of 19190 relevant lines covered (83.54%)

2251.51 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
94.12
-2.43% lib/logflare/backends/spool/spool_ack.ex

Coverage Regressions

Lines Coverage ∆ File
1
94.05
-0.54% lib/logflare/backends/spool/consumer_pipeline/queue_producer.ex
1
30.77
-3.85% lib/logflare/sources/source/text_notification_server.ex
1
12.5
-6.25% lib/logflare/system_metrics/cluster.ex
Jobs
ID Job ID Ran Files Coverage
1 37351260852-1.1 05 Oct 2026 06:00PM UTC 481
83.54
GitHub Action Run
Source Files on build 37351260852-1
  • Tree
  • List 481
  • Changed 5
  • Source Changed 1
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37351260...
  • f2894525 on github
  • Prev Build on main (#37344923...)
  • Next Build on main (#37427021...)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc