Skip to content

Commit e6da419

Browse files
committed
Merge branch 'master' into gh-5279-s3-zstd
2 parents 0cb0b72 + 775223a commit e6da419

421 files changed

Lines changed: 21753 additions & 6058 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.sdkmanrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Enable auto-env through the sdkman_auto_env config
22
# Add key=value pairs of SDKs to use below
3-
java=25.0.2-tem
3+
java=25.0.3-tem
44

CHANGELOG.md

Lines changed: 166 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,169 @@ DO NOT ADD CHANGES HERE - ADD THEM USING log_change.sh
1313
~~~
1414

1515

16+
## [v7.12.4] - 2026-05-14
17+
18+
* Refactor : Improve logging and system info output for Data Feed Keys.
19+
20+
* Feature **#5526** : Add event logging to ask stroom AI.
21+
22+
* Bug **#5544** : Fix DocRef bug.
23+
24+
25+
## [v7.12.3] - 2026-05-11
26+
27+
* Feature **#5183** : Add title to dashboard link function.
28+
29+
* Bug **#5518** : Fix expression editor bug.
30+
31+
* Bug **#5507** : Improve dashboard column filtering.
32+
33+
* Bug **#5516** : Allow event links with only feed USE permission.
34+
35+
* Feature : Add System Info Admin Servlet. Add menu of all admin servlets at `<admin port>/<admin path>/menu`.
36+
37+
* Bug : Fix permission exceptions when getting volume system info.
38+
39+
40+
## [v7.12.2] - 2026-05-05
41+
42+
* Bug **#5532** : Relax Data Feed Identities validation so salt is optional.
43+
44+
45+
## [v7.12.1] - 2026-04-27
46+
47+
* Bug **#5520** : Fix annotation decoration in queries/dashboards not working if the EventId/StreamId columns are not longs.
48+
49+
* Feature : Add config prop `stroom.annotation.eventLinkCacheSizeLimit` (default 1,000,000) to protect Stroom from caching too many annotation to event links. If this limit is exceeded, the query will error.
50+
51+
52+
## [v7.12.0] - 2026-04-27
53+
54+
* Feature : Change the annotation caching to invalidate on a field basis rather than the whole annotation.
55+
56+
* Bug : Fix annotation dash/query columns not updating when status/label/collection names are deleted/modified.
57+
58+
* Bug : Fix annotation decorations in dash/query columns showing deleted annotation entries.
59+
60+
* Bug : Fix annotation Comment and History columns not updating when entries are added/updated/deleted.
61+
62+
* Bug **#5508** : Improve annotation decoration performance.
63+
64+
* Bug : Fix Annotation -> Events screen not refreshing the linked events list when an event link is added/removed.
65+
66+
* Bug : Add missing directories (data_feed_identities, git_repo, lmdb_library, planb, reference_staging_data) as volumes in the docker image.
67+
68+
69+
## [v7.13-beta.2] - 2026-04-15
70+
71+
* Build : Fix CI build failure due to missing Docker container prefix.
72+
73+
74+
## [v7.13-beta.1] - 2026-04-13
75+
76+
* Feature **#5282** : Add pipeline scheduling.
77+
78+
* Feature **#5346** : Choose which external document changes to save when saving a pipeline.
79+
80+
* Issue **#5366** : Add level and status to rules.
81+
82+
* Feature **#5377** : Embedded pipeline docs.
83+
84+
* Issue **#5366** : Create new doc object DataGen.
85+
86+
* Issue **#5366** : Add Execution tab to DataGen.
87+
88+
* Feature **#5387** : Allow pipeline stepping across multiple streams.
89+
90+
* Issue **#5366** : Implement job scheduling for DataGen.
91+
92+
* Feature **#3103** : Allow multiple dashboard instances.
93+
94+
* Refactor : Refactor the feedKey locking in PreAggregator and make AttributeMapUtil#readKeys() more lenient when reading `.meta `files.
95+
96+
* Dependency : Uplift org.apache.commons:commons-pool2 from 2.12.1 to 2.13.1.
97+
98+
* Dependency : Uplift org.flywaydb:flyway-core from 11.20.0 to 12.0.0.
99+
100+
* Dependency : Uplift org.eclipse.jgit:org.eclipse.jgit from 7.3.0.202506031305-r to 7.5.0.202512021534-r.
101+
102+
* Dependency : Uplift org.apache.solr:solr-solrj from 9.8.0 to 9.10.1.
103+
104+
* Dependency : Uplift swagger from 2.2.41 to 2.2.42.
105+
106+
* Bug : Fix output of the manage_users --listPermissions command.
107+
108+
* Bug : Fix missing arg validation on reset_password CLI command. Obfuscate password in logging.
109+
110+
* Refactor : Remove HBase statistics (may require change to default config).
111+
112+
* Refactor : Remove ScyllaDB based state store.
113+
114+
* Feature : Editing items in the UI now indicates save required only when changes are made.
115+
116+
* Issue **#5366** : Refactor schedulers.
117+
118+
* Feature **#3206** : User tab sessions.
119+
120+
* Issue **#5366** : Refactor schedulers to interface and cleanup.
121+
122+
* Dependency : Uplift gwt from 2.12.2 to 2.13.0.
123+
124+
* Dependency : Uplift co.elastic.clients:elasticsearch-java from 9.2.1 to 9.3.2.
125+
126+
* Build : Uplift gradle-wrapper from 9.3.0 to 9.3.1.
127+
128+
* Dependency : Uplift org.yaml:snakeyaml from 2.2 to 2.6.
129+
130+
* Refactor : Replace NullSafe.requireNonNullElse() with Objects.requireNonNullElse().
131+
132+
* Refactor : Replace NullSafe.requireNonNullElseGet() with Objects.requireNonNullElseGet().
133+
134+
* Issue **#5366** : Fix typo.
135+
136+
* Feature **#5366** : Rebase on master.
137+
138+
* Feature **#5366** : Cleanup.
139+
140+
* Feature **#5366** : Checkstyle.
141+
142+
* Feature **#5232** : Add standard annotation comments. MIGRATION: Any comments previously configured in standardComments property will need to saved as annotation comments.
143+
144+
* Feature **#5366** : Change icon for DataGen.
145+
146+
* Feature **#5366** : Add feed name to rule detection.
147+
148+
* Feature : Improve the ProgressMonitor task creation logging output to included counts of errored and skipped filters. Change task creation to re-test filter enabled/deleted state just prior to creating tasks. Add validation to ProcessorConfig to enforce a minimum value of `1` on some properties.
149+
150+
* Feature **#5366** : Fix DataGen destination feed not firing dirty event.
151+
152+
* Feature **#5366** : Checkstyle.
153+
154+
* Bug **#5503** : Fix search rerank LLM processing and add debug logging.
155+
156+
* Dependency : Uplift docker images to `eclipse-temurin:25.0.2_10-jdk-alpine-3.23`. Change Java docker build to use 25.0.2. Change ERD build to use a fixed docker image.
157+
158+
* Bug **#5484** : Fix stream browser Retention column and Info pane showing wrong retention period/rule.
159+
160+
* Feature **#5490** : Add rerank capability to dense vector search.
161+
162+
* Feature **#5492** : Change Git Repo folder colour as red looked like an error.
163+
164+
* Bug **#5486** : Fix SQL to physically delete annotations.
165+
166+
* Bug **#5488** : Fix `forwardFileDestinations[n].atomicMoveEnabled` property not being used.
167+
168+
* Feature **#5480** : Group some annotation history items and make them expandable.
169+
170+
* Bug **#5485** : Fix Plan B snapshot race condition bug.
171+
172+
* Bug **#5495** : Fix query column order bug.
173+
174+
* Bug **#5495** : Add option to reset query table customisation.
175+
176+
* Feature **#5161** : Make dashboard tab menu available from settings icon.
177+
178+
16179
## [v7.12-beta.1] - 2026-03-24
17180

18181
* Feature **#5427** : Change the Data Feed Key authentication mechanism to support authentication by X509 certificate DN. Add a new allowed type of `CERTIFICATE_IDENTITY` to `.receive.enabledAuthenticationTypes`. Rename property `.receive.dataFeedKeysDir` to `.receive.dataFeedIdentitiesDir` and change the structure of the files in it, all files will have to be replaced. Rename property `.receive.dataFeedKeyOwnerMetaKey` to `.receive.dataFeedOwnerMetaKey`. Change the default value of `.receive.dataFeedIdentitiesDir` from `data_feed_keys` to `data_feed_identities`.
@@ -2080,7 +2243,9 @@ DO NOT ADD CHANGES HERE - ADD THEM USING log_change.sh
20802243
* Issue **#3830** : Add S3 data storage option.
20812244

20822245

2083-
[Unreleased]: https://github.com/gchq/stroom/compare/v7.12-beta.1...HEAD
2246+
[Unreleased]: https://github.com/gchq/stroom/compare/v7.13-beta.2...HEAD
2247+
[v7.13-beta.2]: https://github.com/gchq/stroom/compare/v7.13-beta.1...v7.13-beta.2
2248+
[v7.13-beta.1]: https://github.com/gchq/stroom/compare/v7.12-beta.1...v7.13-beta.1
20842249
[v7.12-beta.1]: https://github.com/gchq/stroom/compare/v7.11.6...v7.12-beta.1
20852250
[v7.11.6]: https://github.com/gchq/stroom/compare/v7.11.5...v7.11.6
20862251
[v7.11.5]: https://github.com/gchq/stroom/compare/v7.11.4...v7.11.5

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,8 @@ subprojects {
197197
implementation platform(libs.dropwizard.dependencies)
198198
implementation platform(libs.dropwizard.bom)
199199
implementation platform(libs.aws.bom)
200+
implementation platform(libs.jackson.bom)
201+
implementation platform(libs.jackson2.bom)
200202

201203
testImplementation platform(libs.junit.bom)
202204
}

ci_build.sh

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,9 @@ create_file_hash() {
107107
stop_and_clear_down_stroom_all_dbs() {
108108
# clear down stroom-all-dbs container and volumes so we have a blank slate
109109
echo -e "${GREEN}Clearing down stroom-all-dbs${NC}"
110-
docker ps -q -f=name='stroom-all-dbs' | xargs -r docker stop --time 0
111-
docker ps -a -q -f=name='stroom-all-dbs' | xargs -r docker rm
110+
# bouncit.sh prefixes the volume and container names with bounceit_
111+
docker ps -q -f=name='bounceit_stroom-all-dbs' | xargs -r docker stop --time 0
112+
docker ps -a -q -f=name='bounceit_stroom-all-dbs' | xargs -r docker rm
112113
docker volume ls -q -f=name='bounceit_stroom-all-dbs*' | xargs -r docker volume rm
113114
}
114115

@@ -139,6 +140,9 @@ start_databases() {
139140
-x \
140141
"${dbs_to_start[@]}"
141142

143+
echo -e "${GREEN}Running Docker containers:${NC}"
144+
docker ps --format '{{.Names}}'
145+
142146
popd > /dev/null
143147
}
144148

@@ -148,6 +152,7 @@ generate_ddl_dump() {
148152

149153
stop_and_clear_down_stroom_all_dbs
150154

155+
# The service name is not prefixed with bounceit_ at this point
151156
start_databases stroom-all-dbs
152157

153158
# Run the db migration against the empty db to give us a vanilla
@@ -159,7 +164,7 @@ generate_ddl_dump() {
159164
echo -e "${GREEN}Dumping the database DDL${NC}"
160165
# Produce the dump file
161166
docker exec \
162-
stroom-all-dbs \
167+
bounceit_stroom-all-dbs \
163168
mysqldump \
164169
-d \
165170
-p"my-secret-pw" \

container_build/docker_java/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# It also contains plantuml for plant uml image generation
1919
# Using 'openjdk' on Alpine is not fully supported so using Eclipse Temurin JDK to ensure we have a known jdk version
2020
# See https://github.com/docker-library/docs/blob/master/openjdk/README.md#openjdkversion-alpine
21-
FROM eclipse-temurin:25.0.2_10-jdk-alpine-3.23@sha256:da683f4f02f9427597d8fa162b73b8222fe08596dcebaf23e4399576ff8b037e
21+
FROM eclipse-temurin:25.0.3_9-jdk-alpine-3.23@sha256:30d9f87d702c2c1c601ed0d31e0c88ea1ea474ee7676cda7b7a59e759181c4dd
2222

2323
# Work from the shared git repo dir
2424
WORKDIR /builder/shared

gradle/libs.versions.toml

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ stroomStats = "1.0-alpha.6"
66
# ------------3rd-party------------
77
aws = "2.40.5"
88
commons-io = "2.21.0"
9-
dropwizard = "4.0.14" # used to set the dropwizard-bom version, that controls lots of dependency versions
9+
dropwizard = "5.0.1" # used to set the dropwizard-bom version, that controls lots of dependency versions
1010
elasticsearch = "9.2.1"
1111
flyway = "12.0.0"
1212
guice = "7.0.0"
@@ -93,16 +93,30 @@ hikari = { module = "com.zaxxer:HikariCP", version = "7.0.2" }
9393
http-client = { module = "org.apache.httpcomponents.client5:httpclient5" } # version controlled by dropwizard-dependencies
9494
jBCrypt = { module = "de.svenkubiak:jBCrypt", version = "0.4.3" }
9595
jspecify = { module = "org.jspecify:jspecify", version = "1.0.0" }
96-
jackson-annotations = { module = "com.fasterxml.jackson.core:jackson-annotations" } # version controlled by dropwizard-dependencies
97-
#jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version = "2.9.10" } # version controlled by dropwizard-dependencies
98-
jackson-core = { module = "com.fasterxml.jackson.core:jackson-core" } # version controlled by dropwizard-dependencies
99-
jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind" } # version controlled by dropwizard-dependencies # files('libs/jackson-databind-2.10.5.1.jar'),#
100-
jackson-dataformat-yaml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml" } # version controlled by dropwizard-dependencies
101-
jackson-datatype-jdk8 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jdk8" } # version controlled by dropwizard-dependencies
102-
jackson-datatype-jsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" } # version controlled by dropwizard-dependencies
96+
97+
# Dropwiz 5.0.1 still pulls in jackson 2 but they have different manven coords
98+
# and package names so can be used together.
99+
# -jdk8 and -jsr310 are now included in -databind in v3
100+
# https://github.com/FasterXML/jackson/blob/main/jackson3/MIGRATING_TO_JACKSON_3.md
101+
jackson-bom = { module = "tools.jackson:jackson-bom", version = "3.1.2" }
102+
# jackson-annotations is an exception as it still uses the old v2 maven coords
103+
jackson-annotations = { module = "com.fasterxml.jackson.core:jackson-annotations" } # version controlled by jackson-bom
104+
jackson-core = { module = "tools.jackson.core:jackson-core" } # version controlled by jackson-bom
105+
jackson-databind = { module = "tools.jackson.core:jackson-databind" } # version controlled by jackson-bom
106+
jackson-dataformat-yaml = { module = "tools.jackson.dataformat:jackson-dataformat-yaml" } # version controlled by jackson-bom
107+
108+
# This is legacy Jackson v2 for anything that needs the old version, e.g. mbknor-jackson-jsonSchema
109+
# jackson-annotations is the same for both and is included above
110+
jackson2-bom = { module = "com.fasterxml.jackson:jackson-bom", version = "2.21.2" }
111+
jackson2-core = { module = "com.fasterxml.jackson.core:jackson-core" } # version controlled by jackson-bom
112+
jackson2-databind = { module = "com.fasterxml.jackson.core:jackson-databind" } # version controlled by jackson-bom
113+
jackson2-dataformat-yaml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml" } # version controlled by jackson-bom
114+
jackson2-datatype-jdk8 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jdk8" } # version controlled by jackson-bom
115+
jackson2-datatype-jsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" } # version controlled by jackson-bom
116+
103117
jakarta-activation = { module = "jakarta.activation:jakarta.activation-api" } # version controlled by dropwizard-dependencies
104118
jakarta-annotation-api = { module = "jakarta.annotation:jakarta.annotation-api" } # version controlled by dropwizard-dependencies
105-
jakarta-el = { module = "org.glassfish:jakarta.el" } # version controlled by dropwizard-dependencies
119+
jakarta-el = { module = "jakarta.el:jakarta.el-api", version = "5.0.1" }
106120
jakarta-json-api = { module = "jakarta.json:jakarta.json-api", version = "2.0.1" }
107121
jakarta-servlet-api = { module = "jakarta.servlet:jakarta.servlet-api" } # version controlled by dropwizard-dependencies
108122
jakarta-validation-api = { module = "jakarta.validation:jakarta.validation-api" } # version controlled by dropwizard-dependencies
@@ -125,8 +139,9 @@ jersey-server = { module = "org.glassfish.jersey.core:jersey-server" } # version
125139
jersey-test-framework-grizzly2 = { module = "org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2" } # version controlled by dropwizard-dependencies
126140
jetty-http = { module = "org.eclipse.jetty:jetty-http" } # version controlled by dropwizard-dependencies
127141
jetty-server = { module = "org.eclipse.jetty:jetty-server" } # version controlled by dropwizard-dependencies
128-
jetty-servlet = { module = "org.eclipse.jetty:jetty-servlet" } # version controlled by dropwizard-dependencies
129-
jetty-servlets = { module = "org.eclipse.jetty:jetty-servlets" } # version controlled by dropwizard-dependencies
142+
# The ee10 part needs to correspond to the version pulled in by dropwizard-jetty
143+
jetty-servlet = { module = "org.eclipse.jetty.ee10:jetty-ee10-servlet" } # version controlled by dropwizard-dependencies
144+
jetty-servlets = { module = "org.eclipse.jetty.ee10:jetty-ee10-servlets" } # version controlled by dropwizard-dependencies
130145
jgit = { module = "org.eclipse.jgit:org.eclipse.jgit", version.ref = "jgit" }
131146
jgitssh = { module = "org.eclipse.jgit:org.eclipse.jgit.ssh.apache", version.ref = "jgit" }
132147
jinjava = { module = "com.hubspot.jinjava:jinjava", version = "2.8.2" }
@@ -181,11 +196,13 @@ swagger-annotations = { module = "io.swagger.core.v3:swagger-annotations-jakarta
181196
swagger-core = { module = "io.swagger.core.v3:swagger-core-jakarta", version.ref = "swagger" }
182197
swagger-jaxrs = { module = "io.swagger.core.v3:swagger-jaxrs2-jakarta", version.ref = "swagger" }
183198
vavr = { module = "io.vavr:vavr", version = "0.10.4" }
184-
wiremock = { module = "org.wiremock:wiremock", version = "3.3.1" }
199+
# Wiremock 3.13.2 works with jetty 11 by default, but DW 5.0.1 is using Jetty 12, so we have to use
200+
# wiremock-jetty12
201+
wiremock = { module = "org.wiremock:wiremock-jetty12", version = "3.13.2" }
185202
ws-rs-api = { module = "jakarta.ws.rs:jakarta.ws.rs-api" } # version controlled by dropwizard-dependencies
186203
ws-rs-api-gwt = { module = "javax.ws.rs:javax.ws.rs-api", version = "2.1.1" } # For GWT compilation
187204
xerces = { module = "xerces:xercesImpl", version = "2.12.2" }
188-
zero-allocation-hashing = { module = "net.openhft:zero-allocation-hashing", version = "0.16" }
205+
zero-allocation-hashing = { module = "net.openhft:zero-allocation-hashing", version = "2026.0" }
189206
zstd-jni = { module = "com.github.luben:zstd-jni", version = "1.5.7-6" }
190207

191208
[plugins]
@@ -239,3 +256,4 @@ common-test-runtime = [
239256
"log4j-over-slf4j",
240257
"logback-classic",
241258
"logback-core"]
259+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
-- A set of SQL queries to run before migrating from v6 to v7
2+
-- See https://gchq.github.io/stroom-docs/releases/v07.11/upgrade-notes/
3+
--
4+
-- Run with the mysql --table arg to get formatted output
5+
-- e.g.
6+
-- mysql --force --table -h"localhost" -P"3306" -u"stroomuser" -p"stroompassword1" stroom < v07_11_db_pre_migration_checks.sql > v07_11_db_pre_migration_checks.out 2>&1
7+
-- docker exec -i stroom-all-dbs mysql --force --table -h"localhost" -P"3307" -u"stroomuser" -p"stroompassword1" stroom < v07_11_db_pre_migration_checks.sql > v07_11_db_pre_migration_checks.out 2>&1
8+
9+
10+
\! echo 'Find annotation entries with no assigned user. No action required if this returns nothing.';
11+
12+
SELECT a.id, a.title, ae.id AS entry_id
13+
FROM annotation a
14+
INNER JOIN annotation_entry ae ON a.id = ae.fk_annotation_id
15+
WHERE ae.entry_user_uuid IS NULL OR ae.entry_user_uuid = '';
16+
17+
\! echo 'Listing all enabled Stroom users for reference';
18+
19+
SELECT uuid, name, display_name, full_name
20+
FROM stroom_user su
21+
WHERE is_group = false
22+
AND enabled = true
23+
ORDER by name;
24+
25+
\! echo 'Finished';

0 commit comments

Comments
 (0)