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

evolution-gaming / kafka-flow / 29419911541
83%

Build:
DEFAULT BRANCH: master
Ran 15 Jul 2026 01:41PM 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

15 Jul 2026 01:36PM UTC coverage: 83.818% (-0.1%) from 83.958%
29419911541

push

web-flow
Derive transactional input topic and consumer generation from the flow (#842)

* Derive transactional config from the flow

The transactional Kafka snapshot persistence required hand-wiring two
values the flow already knows, with silent breakage when they mismatched:
the input topic was passed twice (once to the flow, again as
TransactionalConfig.inputTopic, unvalidated - a mismatch would commit
offsets for a topic the flow does not consume), and the driving consumer's
group metadata had to be passed explicitly, which forced allocating the
consumer before building the module and made it possible to wire the
metadata of some other consumer.

Both are now supplied by the flow itself: KafkaPersistenceModuleOf.make
takes the assigned TopicPartition instead of a bare Partition and
TransactionalConfig.inputTopic is gone, so the committed topic always
matches what the consumer reads; PartitionFlowOf.apply gains a
groupMetadata parameter that TopicFlow fills from the driving consumer,
and cachingTransactional loses its groupMetadata parameter - the module
is built like any other config-driven module and wired in as usual.

With both values out of the config, transactionalIdPrefix no longer has
a reason to encode the input topic: docs and examples now recommend the
applicationId (the prefix does not affect fencing - it is a readable
label and, on an ACL-secured cluster, the transactional.id prefix the
producer principal must be authorized for).

The per-assignment facts (topicPartition, assignedAt, groupMetadata) are
grouped into a single PartitionAssignment context, with the overridable
ScheduleCommit capability kept as a separate parameter;
KafkaPersistenceModuleOf reuses that type instead of defining its own, so
the transactional commit override happens in the capability parameter
rather than by rewriting the context.

The groupMetadata scaladoc states the live-read contract (pass it along
unevaluated - a memoized read would go stale on the next rebalance a... (continued)

2 of 2 new or added lines in 2 files covered. (100.0%)

269 existing lines in 68 files now uncovered.

1787 of 2132 relevant lines covered (83.82%)

1.3 hits per line

Coverage Regressions

Lines Coverage ∆ File
29
65.88
-34.12% core/src/main/scala/com/evolutiongaming/kafka/flow/ConsumerFlow.scala
19
68.18
-27.06% core/src/main/scala/com/evolutiongaming/kafka/flow/persistence/Persistence.scala
16
85.09
-9.64% core/src/main/scala/com/evolutiongaming/kafka/flow/PartitionFlow.scala
14
42.86
-17.14% core/src/main/scala/com/evolutiongaming/kafka/flow/FoldOption.scala
14
75.41
-20.04% core/src/main/scala/com/evolutiongaming/kafka/flow/snapshot/Snapshots.scala
12
45.83
3.28% core/src/main/scala/com/evolutiongaming/kafka/flow/kafka/Consumer.scala
8
54.17
-10.83% core/src/main/scala/com/evolutiongaming/kafka/flow/Fold.scala
8
40.0
-21.11% core/src/main/scala/com/evolutiongaming/kafka/flow/KafkaFlow.scala
8
0.0
0.0% core/src/main/scala/com/evolutiongaming/kafka/flow/persistence/compression/CompressorSyntax.scala
6
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/compression/CompressorMetrics.scala
6
60.0
-27.5% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/cassandra/CassandraPersistence.scala
6
91.46
-7.25% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/snapshot/CassandraSnapshots.scala
5
0.0
0.0% core/src/main/scala/com/evolutiongaming/kafka/flow/kafka/EmptyRebalanceConsumer.scala
5
33.33
-12.82% core/src/main/scala/com/evolutiongaming/kafka/flow/persistence/PersistenceModule.scala
5
18.18
-15.15% core/src/main/scala/com/evolutiongaming/kafka/flow/TickOption.scala
5
69.44
-13.41% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/cassandra/CassandraCodecs.scala
5
90.59
-5.88% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/journal/CassandraJournals.scala
4
23.53
-7.24% core/src/main/scala/com/evolutiongaming/kafka/flow/EnhancedFold.scala
4
70.0
-11.82% core/src/main/scala/com/evolutiongaming/kafka/flow/persistence/PersistenceOf.scala
4
96.85
-3.15% core/src/main/scala/com/evolutiongaming/kafka/flow/timer/TimerFlowOf.scala
4
93.06
-5.59% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/key/CassandraKeys.scala
4
86.21
-13.79% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/key/KeySchema.scala
4
95.06
-4.94% persistence-kafka/src/main/scala/com/evolutiongaming/kafka/flow/kafkapersistence/KafkaSnapshotWriteDatabase.scala
3
78.95
-16.89% core/src/main/scala/com/evolutiongaming/kafka/flow/KeyStateOf.scala
3
0.0
0.0% core/src/main/scala/com/evolutiongaming/kafka/flow/timer/TimerWindow.scala
3
87.88
-10.12% core/src/main/scala/com/evolutiongaming/kafka/flow/TopicFlow.scala
3
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/journal/JournalDatabaseMetrics.scala
3
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/PartitionFlowMetrics.scala
3
0.0
-35.71% metrics/src/main/scala/com/evolutiongaming/kafka/flow/snapshot/SnapshotDatabaseMetrics.scala
3
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/TopicFlowMetrics.scala
3
92.59
-5.84% persistence-kafka/src/main/scala/com/evolutiongaming/kafka/flow/kafkapersistence/KafkaPersistenceModule.scala
3
33.33
-16.67% persistence-kafka/src/main/scala/com/evolutiongaming/kafka/flow/kafkapersistence/KafkaPersistencePartitionMapper.scala
2
42.86
-17.14% core/src/main/scala/com/evolutiongaming/kafka/flow/ConsumerFlowOf.scala
2
75.0
-25.0% core/src/main/scala/com/evolutiongaming/kafka/flow/kafka/PendingCommits.scala
2
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/KeyStateMetrics.scala
2
83.87
-6.13% metrics/src/main/scala/com/evolutiongaming/kafka/flow/metrics/syntax/package.scala
2
0.0
0.0% metrics/src/main/scala/com/evolutiongaming/kafka/flow/persistence/PersistenceModuleMetrics.scala
2
33.33
-66.67% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/cassandra/ConsistencyOverrides.scala
2
0.0
0.0% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/journal/conversions/HeaderToTuple.scala
2
0.0
0.0% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/journal/conversions/TupleToHeader.scala
2
88.24
-11.76% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/journal/JournalSchema.scala
2
92.0
-8.0% persistence-cassandra/src/main/scala/com/evolution/kafka/flow/cassandra/CassandraModule.scala
2
91.18
-5.79% persistence-kafka/src/main/scala/com/evolutiongaming/kafka/flow/kafkapersistence/KafkaPartitionPersistence.scala
1
87.5
-12.5% core/src/main/scala/com/evolutiongaming/kafka/flow/AdditionalStatePersist.scala
1
50.0
-36.67% core/src/main/scala/com/evolutiongaming/kafka/flow/FoldToState.scala
1
75.0
-18.75% core/src/main/scala/com/evolutiongaming/kafka/flow/journal/JournalDatabase.scala
1
50.0
-16.67% core/src/main/scala/com/evolutiongaming/kafka/flow/kafka/Codecs.scala
1
85.71
-14.29% core/src/main/scala/com/evolutiongaming/kafka/flow/key/KeyDatabase.scala
1
80.0
-20.0% core/src/main/scala/com/evolutiongaming/kafka/flow/PartitionFlowOf.scala
1
87.1
-3.23% core/src/main/scala/com/evolutiongaming/kafka/flow/persistence/compression/Compressor.scala
1
80.56
-2.3% core/src/main/scala/com/evolutiongaming/kafka/flow/registry/EntityRegistry.scala
1
50.0
-50.0% core/src/main/scala/com/evolutiongaming/kafka/flow/snapshot/KafkaSnapshot.scala
1
87.5
-12.5% core/src/main/scala/com/evolutiongaming/kafka/flow/snapshot/SnapshotDatabase.scala
1
28.57
-4.76% core/src/main/scala/com/evolutiongaming/kafka/flow/Tick.scala
1
25.0
-58.33% core/src/main/scala/com/evolutiongaming/kafka/flow/TickToState.scala
1
0.0
0.0% core/src/main/scala/com/evolutiongaming/kafka/flow/timer/KafkaTimer.scala
1
80.0
-20.0% core/src/main/scala/com/evolutiongaming/kafka/flow/timer/TimerContext.scala
1
50.0
-50.0% core/src/main/scala/com/evolutiongaming/kafka/flow/timer/TimerFlow.scala
1
88.89
-11.11% core/src/main/scala/com/evolutiongaming/kafka/flow/timer/Timestamps.scala
1
40.0
-10.0% core/src/main/scala/com/evolutiongaming/kafka/flow/TopicFlowOf.scala
1
90.0
-10.0% kafka-journal/src/main/scala/com/evolutiongaming/kafka/flow/journal/JournalFold.scala
1
20.0
-21.67% metrics/src/main/scala/com/evolutiongaming/kafka/flow/FlowMetrics.scala
1
57.14
-7.14% metrics/src/main/scala/com/evolutiongaming/kafka/flow/FoldMetrics.scala
1
33.33
-5.56% metrics/src/main/scala/com/evolutiongaming/kafka/flow/key/KeyDatabaseMetrics.scala
1
33.33
-16.67% metrics/src/main/scala/com/evolutiongaming/kafka/flow/metrics/Metrics.scala
1
52.94
-20.14% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/cassandra/SessionHelper.scala
1
63.16
-9.57% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/key/KeySegments.scala
1
61.54
-11.79% persistence-cassandra/src/main/scala/com/evolutiongaming/kafka/flow/key/SegmentNr.scala
Jobs
ID Job ID Ran Files Coverage
1 29419911541.1 15 Jul 2026 01:41PM UTC 106
71.15
2 29419911541.2 15 Jul 2026 01:43PM UTC 103
70.57
Source Files on build 29419911541
  • Tree
  • List 106
  • Changed 21
  • Source Changed 6
  • Coverage Changed 21
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 67a2e9c6 on github
  • Prev Build on master (#28451008814)
  • Next Build on master (#29431600774)
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