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

evolution-gaming / kafka-flow / 40857424675
86%

Build:
DEFAULT BRANCH: master
Ran 29 Oct 2026 10:29AM UTC
Jobs 2
Files 106
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

29 Oct 2026 10:25AM UTC coverage: 84.023% (+0.05%) from 83.974%
40857424675

push

github

web-flow
Unload a key only after its state was persisted (#934)

* Unload a key only after its state was persisted

`persistPeriodicallyAndUnloadOrphaned` removed a key whenever the unload
threshold was crossed, whether or not the persist that preceded it went
through. With `ignorePersistErrors` on, a failed persist is logged and
the key is unloaded anyway; `KeyContext.remove` also drops the offset it
held, so the partition can commit past state that never reached the
store and the next recovery skips those events.

Gate the unload on the persist outcome: an unpersisted key stays loaded
and keeps holding its offset until a later tick persists it.

* Log an ignored persist failure at WARN

In `persistPeriodicallyAndUnloadOrphaned` a key whose persist failed
stays loaded and retries every tick, logging this line each time, so
its rate shows how many keys are stuck in memory. Log it at WARN, as
AdditionalStatePersist does for the failures it ignores.

* Tidy the ignorePersistErrors docs

Reflow the scaladoc after the WARN rewording, and note in the
overview that a key kept after an ignored persist failure stays in
memory.

* Test that a kept key is unloaded once a later persist succeeds

A key kept loaded after an ignored persist failure must not stay in
memory for good once the store is back.

* Persist the kept key at a higher offset in the recovery test

A key whose persist failed, e.g. a snapshot too big for the store, can
succeed later once its state has moved on.

392 of 463 branches covered (84.67%)

Branch coverage included in aggregate %.

1901 of 2266 relevant lines covered (83.89%)

1.31 hits per line

Coverage Regressions

Lines Coverage ∆ File
3
0.0
-71.43% com/evolutiongaming/kafka/flow/journal/JournalDatabaseMetrics.scala
1
99.13
-0.87% com/evolutiongaming/kafka/flow/kafkapersistence/KafkaPartitionPersistence.scala
1
92.31
-2.27% com/evolutiongaming/kafka/flow/KeyContext.scala
1
95.83
-4.17% com/evolutiongaming/kafka/flow/timer/Timers.scala
Jobs
ID Job ID Ran Files Coverage
1 Scala 3.3.8 - 40857424675.1 29 Oct 2026 10:30AM UTC 106
72.98
GitHub Action Run
2 Scala 2.13.18 - 40857424675.2 29 Oct 2026 10:29AM UTC 103
72.23
GitHub Action Run
Source Files on build 40857424675
  • Tree
  • List 106
  • Changed 19
  • Source Changed 0
  • Coverage Changed 19
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #40857424675
  • 8b97d0b4 on github
  • Prev Build on master (#40367313216)
  • Next Build on master (#40858500368)
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