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

evolution-gaming / kafka-flow / 29927664876
83%

Build:
DEFAULT BRANCH: master
Ran 22 Jul 2026 02:20PM 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

22 Jul 2026 02:14PM UTC coverage: 83.494% (+0.5%) from 82.982%
29927664876

push

web-flow
Recover transactional snapshots completely, with a bounded read (#857)

* Recover transactional snapshots completely, with a bounded read

The recovery read stopped at the read consumer's own end offset -
under read_committed that is the last-stable-offset, which an open
transaction pins below records committed after it. A recovery inside
that window silently missed committed snapshots while input offsets
were not held back the same way, so a second handover could recover
stale state yet resume from the newer committed offset. The read now
targets the high watermark, captured up front through a short-lived
read_uncommitted consumer, and waits out any open transaction below
it - the shape Kafka Streams' exactly-once restore settled on
(KAFKA-10167). A stable per-partition transactional.id makes the wait
rare: a takeover's initTransactions aborts a crashed predecessor's
unfinished transaction sub-second. Fencing of stale writers stays
with the consumer generation, so completeness rests on the read
bound, never on naming.

That wait is normally self-resolving, but a hanging transaction
(KIP-664; prevented by KIP-890 brokers) or a log truncated below the
captured target made the read hang forever on the poll thread inside
the rebalance callback, until max.poll.interval.ms evicted the member
silently. A no-progress deadline (default 3 minutes, reset by
every position advance) fails the read with
RecoveryReadStalledError instead, diagnosed against a re-read log
end - truncation versus a transaction that outlived the deadline -
freeing the thread for a restarted recovery.

The mode's public surface stays the entry point plus
TransactionalConfig: the stall error is package-private (its contract
is the log line and its diagnosis, not a catchable type), and both
knob defaults live on a TransactionalConfig companion as
package-private constants - the config owns its defaults, the
mechanisms take explicit parameters. Narrowing the previously public
group-commit d... (continued)

30 of 31 new or added lines in 2 files covered. (96.77%)

110 existing lines in 33 files now uncovered.

1821 of 2181 relevant lines covered (83.49%)

1.33 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
95.24
-1.73% persistence-kafka/src/main/scala/com/evolutiongaming/kafka/flow/kafkapersistence/KafkaPartitionPersistence.scala

Coverage Regressions

Lines Coverage ∆ File
15
14.29
-21.43% metrics/src/main/scala/com/evolutiongaming/kafka/flow/FlowMetrics.scala
15
23.33
-29.61% metrics/src/main/scala/com/evolutiongaming/kafka/flow/FoldMetrics.scala
7
65.38
-26.62% core/src/main/scala/com/evolutiongaming/kafka/flow/KeyStateOf.scala
7
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/PartitionFlowMetrics.scala
5
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/persistence/PersistenceModuleMetrics.scala
5
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/snapshot/SnapshotDatabaseMetrics.scala
5
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/TopicFlowMetrics.scala
4
61.54
-30.77% core/src/main/scala/com/evolutiongaming/kafka/flow/KeyContext.scala
4
81.48
-15.49% core/src/main/scala/com/evolutiongaming/kafka/flow/KeyFlow.scala
4
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/journal/JournalDatabaseMetrics.scala
4
73.91
-15.56% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/cassandra/CassandraCodecs.scala
3
70.59
-17.65% core/src/main/scala/com/evolutiongaming/kafka/flow/journal/JournalDatabase.scala
3
66.67
-25.0% core/src/main/scala/com/evolutiongaming/kafka/flow/key/KeyDatabase.scala
3
26.67
-16.19% core/src/main/scala/com/evolutiongaming/kafka/flow/persistence/PersistenceModule.scala
3
64.29
-23.21% core/src/main/scala/com/evolutiongaming/kafka/flow/snapshot/SnapshotDatabase.scala
3
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/KeyStateMetrics.scala
2
36.96
-5.6% core/src/main/scala/com/evolutiongaming/kafka/flow/kafka/Consumer.scala
2
82.35
-12.65% core/src/main/scala/com/evolutiongaming/kafka/flow/timer/Timers.scala
2
57.89
-14.83% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/key/KeySegments.scala
1
94.44
-5.56% core/src/main/scala/com/evolutiongaming/kafka/flow/ConsumerFlow.scala
1
93.75
-6.25% core/src/main/scala/com/evolutiongaming/kafka/flow/journal/Journals.scala
1
33.33
-16.67% core/src/main/scala/com/evolutiongaming/kafka/flow/KeyFlowExtras.scala
1
64.71
-16.06% core/src/main/scala/com/evolutiongaming/kafka/flow/persistence/PersistenceOf.scala
1
0.0
-100.0% core/src/main/scala/com/evolutiongaming/kafka/flow/snapshot/KafkaSnapshot.scala
1
75.0
-8.33% core/src/main/scala/com/evolutiongaming/kafka/flow/TickToState.scala
1
50.0
-50.0% core/src/main/scala/com/evolutiongaming/kafka/flow/timer/TimerFlow.scala
1
95.0
-5.0% kafka-journal/src/main/scala/com/evolutiongaming/kafka/flow/journal/JournalParser.scala
1
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/compression/CompressorMetrics.scala
1
25.0
-31.25% metrics/src/main/scala/com/evolutiongaming/kafka/flow/key/KeyDatabaseMetrics.scala
1
0.0
0.0% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/journal/conversions/HeaderToTuple.scala
1
0.0
0.0% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/journal/conversions/TupleToHeader.scala
1
95.45
-4.55% persistence-cassandra/src/main/scala/com/evolution/kafka/flow/cassandra/CassandraModule.scala
1
90.91
-9.09% persistence-kafka/src/main/scala/com/evolutiongaming/kafka/flow/kafkapersistence/package.scala
Jobs
ID Job ID Ran Files Coverage
1 29927664876.1 22 Jul 2026 02:20PM UTC 103
71.12
2 29927664876.2 22 Jul 2026 02:21PM UTC 106
71.3
Source Files on build 29927664876
  • Tree
  • List 106
  • Changed 10
  • Source Changed 3
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • bc337141 on github
  • Prev Build on master (#29816958200)
  • Next Build on master (#29938030243)
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