Changelog
[2.0.0] (2026-07-02)
Breaking Changes
-
Connector-managed snapshot replaces explicit COMMAND-mode parameters: The boolean parameters
fields.evaluate.as.command.enable(introduced in 1.2.4) andfields.auto.command.mode.enable(introduced in 1.3.2) have been removed and superseded by the unifieditem.snapshot.enabled.modeparameter. COMMAND mode is now activated viaitem.snapshot.enabled.mode = COMMAND, which also enables connector-managed snapshot for the affected items. Manual COMMAND-mode subscriptions without connector-managed snapshot remain supported by mapping bothfield.keyandfield.commandexplicitly while leavingitem.snapshot.enabled.modeat its defaultNONE. (#88) -
Removed special-case snapshot signaling records: The convention of injecting Kafka records with
key = snapshotandcommand ∈ {CS, EOS}to drive snapshot lifecycle from the topic side — only meaningful in combination withfields.evaluate.as.command.enable = true(introduced in 1.2.4) — has been removed. Snapshot lifecycle is now managed entirely by the connector based onitem.snapshot.enabled.mode. (#88) -
record.consume.fromandrecord.extraction.error.strategysemantics under snapshot: Whenitem.snapshot.enabled.modeis set to any value other thanNONE, the connector manages partition positions explicitly (newly assigned partitions seek to beginning; re-assigned partitions resume from committed offset), makingrecord.consume.fromineffective; andrecord.extraction.error.strategyis forced toIGNORE_AND_CONTINUE. (#88) -
Minimum Lightstreamer Broker version bumped to 7.4.8: The connector now requires Lightstreamer Broker (also referred to as Lightstreamer Server) version 7.4.8 or newer, as the new connector-managed snapshot feature relies on APIs introduced in that release. (#88)
New Features
-
Connector-managed snapshot: Introduced first-class support for connector-managed snapshot via the new
item.snapshot.enabled.modeparameter, with one mode per Lightstreamer subscription Mode:MERGE— pins subscription Mode to MERGE; per-item store keeps the latest value; snapshot is a single event per item. See MERGE snapshot.DISTINCT— pins subscription Mode to DISTINCT; per-item store is a FIFO bounded byitem.snapshot.distinct.length; snapshot replays the most recent events in publish order. See DISTINCT snapshot.COMMAND— pins subscription Mode to COMMAND; the connector synthesizes thecommandfield (ADD/UPDATE/DELETE) from per-(item, key)state and tombstones; snapshot is the full row set currently materialized for the item. See COMMAND snapshot.
When activated, the internal Kafka consumer starts eagerly at bind time, replays the topic from the beginning to pre-seed the Lightstreamer Server per-item store, then transitions to realtime tailing. Late subscribers receive the materialized snapshot followed by realtime updates. See Snapshot management and Connector-managed snapshot. (#88)
-
DISTINCT snapshot length parameter: Added the new
item.snapshot.distinct.lengthparameter (positive integer, default10) to cap the per-item FIFO whenitem.snapshot.enabled.mode = DISTINCT. (#88) -
Per-item idle expiration: Added the new
item.snapshot.max.idle.secondsparameter (non-negative integer;0disables) to discard the snapshot of an item after a configurable idle period, so that the next incoming record starts a fresh one. (#88)
Improvements
-
Poison-pill tolerance: A single malformed record no longer aborts consumption. Records that fail deserialization are individually skipped and logged at WARN level (with topic, partition, and offset), and consumption continues with the remaining good records. As a safety net, when all records in a non-empty batch fail — a pattern indicating a systemic misconfiguration (e.g., wrong deserializer) rather than isolated corrupt records — the connector fails fast instead. (#88)
-
Upgraded Gradle to version 9.6.1. (#88)
Third-Party Library Updates
-
Upgraded the
ls-adapter-inprocessSDK dependency to version 8.1.0. (#88) -
Upgraded the base Lightstreamer Docker image to version 7.4.8. (#88)
-
Upgraded the
slf4j-reload4jdependency to version 2.0.18. (#88) -
Upgraded the Spotless plugin for Gradle dependency to version 8.8.0. (#88)
Examples and Documentation
-
Snapshot management documentation: Added the new Snapshot management chapter covering the default
NONEbehavior, the connector-managed snapshot lifecycle, per-Mode snapshot shape, extraction-layout rules for snapshot correctness, idle expiration, and caveats; plus a new Item snapshot settings parameter reference. (#88) -
COMMAND mode field mapping documentation: Added the new COMMAND mode field mapping subsection describing both routes — connector-managed snapshot (
item.snapshot.enabled.mode = COMMAND, with synthesizedcommandfield) and manual mapping (field.commandmapped explicitly, defaultNONEsnapshot mode) — and the trade-offs between them. (#88) -
Updated the factory
adapters.xmlwith the newitem.snapshot.*parameters and alignedfield.key/field.commanddocumentation. (#88) -
Airport Demo overhaul: Updated the Airport Demo to showcase COMMAND-mode connector-managed snapshot, alongside a broader rewrite of the demo producer, its JSON payload schema, and the corresponding
adapters.xmlfield mappings; the demo README has been re-aligned accordingly. (#88) -
Sample producer Maven coordinates: The Maven
grouppublished to GitHub Packages has been unified tocom.lightstreamer.kafka.examplesfor both sample producer projects —quickstart-producer(previouslycom.lightstreamer.kafka) and the airport-demo producerexample-kafka-connector-demo-publisher(previouslycom.lightstreamer.examples). Consumers pinning the old coordinates must update them. (#88) -
Quickstart Compose modernization: Rewrote every quickstart
docker-compose.ymlto the long-formdepends_onsyntax with explicitcondition:clauses; added broker healthchecks where the broker image supports them (Redpanda-based quickstarts); upgraded the bundled Redpanda Console image fromv2.4.5tov3.8.0and migrated its embedded config to the v3 schema. (#88) -
Applied style and formatting consistency pass across all updated
README.mdfiles (root,docker/,examples/, and everyexamples/**/README.md) and across the factoryadapters.xml: unified heading hierarchy and Table of Contents indentation, parameter naming and link conventions, code-block fencing, and inline-code styling for parameters, values, and identifiers. (#88)