Change Log
New Features and Changes
-
Feature : Add
random-integer(upperbound)XSLT function. -
Feature #5833 : Add XSLT function
send-email()to send an email using the SMTP server configured instroom.analytics.emailConfig. -
Feature #5834 : Enterprise Floor Mapping
-
Feature #5771 : Traces: store, publish and browse as a first-class document type on a shared fs.
-
Feature #5546 : Add an S3 forwarder to proxy to forward proxy format ZIPs to S3. Add an SQS consumer to Stroom to consume S3 create events and create a meta record for the S3 based file. Add the volume type
S3 v1 (Read only)for reading data from an S3 store that Stroom only has read access to. -
Feature #5279 : Add experimental volume type
S3 v2 (Experimental)that uses framed ZStandard compression. This is work in progress and not for production use. -
Feature #5662 : Add stepping data store to cache stepping data and improve stepping performance.
-
Feature #5690 : Add task creation linear backoff to reduce futile attempts to create tasks for filters with less/no data to process.
-
Feature #5691 : Add task creation budgets per processor profile to ensure all profiles get tasks to process.
-
Feature #5699 : Add a per-task heartbeat job that renews the status time of tasks a node is processing, so live long-running tasks can be told apart from tasks owned by a dead node. Note that for processing tasks the Status Time now shows the time of the last heartbeat.
-
Feature #5699 : Replace the master-only Disown Dead Tasks job with a cluster-locked Processor Task Reaper driven by per-task heartbeats: stale processing tasks are returned to the task queue even when there is no master node, a node that cannot renew its heartbeats terminates its own in-flight tasks to prevent duplicate output, and a task status write that loses its optimistic lock is abandoned instead of forced. The stroom.processor.disownDeadTasksAfter property is replaced by stroom.processor.taskLeaseTimeout. This must not be deployed in the same release as the task heartbeat change - every node must already be heart-beating before the reaper replaces the node-contact check, or long-running tasks on not-yet-upgraded nodes will be falsely reaped.
-
Feature #5699 : Add the per node processor task availability summary and eligible filter computation that let a worker node work out for itself which processor filters it is allowed to process and which of them have tasks waiting, in a single query rather than one per filter. Not yet used to claim tasks. Adds the stroom.processor.taskAvailabilityInterval property.
-
Feature #5699 : Restoring a logically deleted processor filter, e.g. by importing a filter over one that was deleted, now replaces it with a new filter that takes over its UUID and records the deleted filter as its parent, instead of resetting the deleted filter’s tracker and reusing it. This keeps a processor filter ID meaning one fixed body of work, so that the completed tasks of the old filter still refer to a tracker that reflects them, and adds the processor_filter.parent_filter_id column. Note that restoring a filter that still has active tasks no longer fails.
-
Feature #5699 : Add an experimental mode, stroom.processor.claimTasksOnWorker, off by default, in which each worker node finds and claims its own processor tasks directly from the database rather than being fed by the task queue held in memory on the master node. It is not yet proven in production, so leave it off unless you have been asked to trial it; with it off Stroom behaves as before, using the master’s task queue. A worker knows which filters its own processing profiles allow it to run, so it no longer has to be guessed at on its behalf, and task assignment no longer depends on there being a master node. Tasks are claimed with SKIP LOCKED so that nodes claiming at the same time get different tasks, oldest first. A new ProcessorTaskClaiming system info entry gathers what every node is doing at the moment it is asked, replacing the master only view of the task queue. This must be set the same on every node and changing it is a hard cutover: stop the whole cluster, change the value everywhere, then start it again. Running a mixed cluster is not supported. Tasks left behind by either mode are returned to the created state and reprocessed, so switching either way loses no work, though tasks that were in flight when the cluster stopped wait for stroom.processor.taskLeaseTimeout before another node picks them up. The Processor Task Reaper also returns any tasks left behind by the master’s queue to the created state once this mode is on.
-
Feature #1890 : Add an optional sixth argument to
bitmap-lookupto set the delimiter placed between the values of the matched bit positions. Defaults to a single space. -
Feature #5751 : Add
ask-ai()XSLT andaskAi()StroomQL functions to ask a named OpenAI model a question and return its answer. -
Feature #5761 : Add AI summaries to reports.
Bug Fixes
-
Bug #5843 : Fix NPE when fetching explorer tree nodes with debug logging enabled.
-
Bug #5597 : Fix
TypeError: Cannot read properties of nullerror when an embedded query with a visualisation returns no rows. -
Bug #5853 : Fix error saying SQS has not been configured when it has.
-
Bug : Fix the OK and Cancel buttons being permanently disabled when OK is clicked on the Lucene index New Field dialog with a blank name.
-
Bug : Fix pooled byte buffer resource closure.
-
Bug : Fix more issues with failure handling during S3 event consumption.
-
Bug #5835 : Stop logging an ERROR on every run of the Table Builder analytic job for each rule with an empty or broken query. A WARN is now only logged if such a rule is preventing an existing store from being deleted.
-
Bug #5819 : Replace the Lucene 8.11.4
lucene-analyzers-commondependency withlucene-analysis-common:10.3.2so that it matches the version of Lucene core. -
Bug #5667 : Fix scheduled analytic, report and data generation execution needlessly using single-threaded work queues. Executions now run sequentially on the calling thread.
-
Bug #5844 : Fix termination handling for S3 event notifications poll job. Also stop it spamming the logs when there is a problem. Added the property
sleepDurationPostFailureto control sleep time after a failure. -
Bug #5809 : Change the Admin account bootstrap process to use
tryLockrather thanlockto save holding up the other nodes. -
Bug #5793 : Fix
No enabled forward destinations are configurederror when booting proxy with only an S3 forward destination enabled. -
Bug : Fix error handling in stream viewer when data does not exist in S3.
-
Bug #5683 : Fix processor filters silently skipping a stream that was still being committed when task creation read the max stream id, leaving it permanently unprocessed. Task creation is now bounded by the max stream id seen on the previous poll, which costs up to one poll interval of extra latency before a new stream gets a task and can be turned off with the property
stroom.processor.useMaxMetaIdFromPreviousPoll. -
Bug #5713 : Fix
bitmap-lookupreturning the values of the matched bit positions concatenated with no delimiter. The values are now space delimited as documented. -
Bug : DataGen Issues.
Dependency Changes
-
Dependency : Bumps poi from 5.4.1 to 5.5.1.
-
Dependency : Bumps software.amazon.awssdk.crt:aws-crt from 0.47.0 to 0.48.5.
-
Dependency : Bumps jakarta.xml.bind:jakarta.xml.bind-api from 4.0.2 to 4.0.5.
-
Dependency : Uplift lucene from 10.3.2 to 10.5.1.
-
Dependency : Uplift org.apache.commons:commons-fileupload2-jakarta-servlet6 from 2.0.0-M4 to 2.0.0-M5.
-
Dependency : Uplift Jooq to v3.21.9.
-
Dependency : Bumps com.openai:openai-java from 4.3.0 to 4.69.3.
-
Dependency : Uplift docker image base to eclipse-temurin:25.0.4.1_1-jdk-alpine-3.24.
-
Dependency : Add missing jackson annotation dependencies.
Code Refactor
- Refactor : Refactor
meta-streamandmeta-stream-for-idinto two classes. Refactormanifestandmanifest-for-idinto two classes.
Build Changes
-
Build : Bumps org.yaml:snakeyaml from 2.6 to 2.7 in the build script.
-
Build : Bump com.gradle.develocity from 4.2.2 to 4.4.1.
-
Build : Uplift gradle to 9.8.0.
-
Build : Change ERD dockerfile to use debian:trixie-slim, uplift plant_erd to v0.4.12.
-
Build : Uplift PlantUML to v1.2026.8 and fix SVG generation script.
-
Build : Split up java CI build to reduce memory use and to make checkstyle fail fast.