Skip to content

Merge release 3.22.0 into 4.0.x - #918

Merged
DavidBadura merged 37 commits into
4.0.xfrom
3.22.x-merge-up-into-4.0.x_f6Q0b3qP
Oct 3, 2026
Merged

DavidBadura merged 37 commits into
4.0.xfrom
3.22.x-merge-up-into-4.0.x_f6Q0b3qP

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown

Release Notes for 3.22.0

Feature release (minor)

3.22.0

  • Total issues resolved: 0
  • Total pull requests resolved: 1
  • Total contributors: 1

enhancement

DanielBadura and others added 30 commits September 14, 2026 19:00
* on versioned branches only trigger deploy if a changed landed in the docs
* on release always trigger deploy
Improve docs deployement to minimise CI times
| datasource | package | from | to  |
| ---------- | ------- | ---- | --- |
| docker     | php     | 8.3  | 8.5 |


Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
| datasource | package | from | to |
| ---------- | ------- | ---- | -- |
| docker     | mariadb | 12   | 13 |


Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
| datasource | package | from | to |
| ---------- | ------- | ---- | -- |
| docker     | mysql   | 8    | 26 |


Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ay happen that an already handled subscription appear unhandled for the engine due how mysql/mariadb work regarding affected rows.

Also fix an api gurantee issue: catch unqiue constraint exception from doctrine and throw a subscription already exists exception
* drop index via task could have not worked due to casing issues
* dont claim lock idefinelty with mysql/mariadb if lock could not aquire
* event criterion passed wrong param type to dbal
* cipher key store could return random key for one subject if mutliple existed
…GQ6FRTo

Merge release 3.21.2 into 3.22.x
…is active and exactly 7281 messages were saved that the setval was not called
Fix save of multiple messages when `keep_index` used and exact 7281 messages saved
…wtQcaUO

Merge release 3.21.3 into 3.22.x
…-commit

Fix lock timing for mysql/mariadb: handle lock outside the transaction
…LdqrWiL

Merge release 3.21.4 into 3.22.x
…x` was only incremented by one instead of set to the yielded index. The next event was then treated as a new gap, the loader reloaded from the old position and yielded the event after the gap again. Batching subscribers handled that event twice.
Update roave/backward-compatibility-check to ^8.23.0
DanielBadura and others added 5 commits October 1, 2026 23:42
…7iANmaW

Merge release 3.21.5 into 3.22.x
| datasource | package           | from  | to     |
| ---------- | ----------------- | ----- | ------ |
| packagist  | league/commonmark | 2.9.0 | 2.10.2 |

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@DavidBadura DavidBadura self-assigned this Oct 3, 2026
# Conflicts:
#	docs/cli.md
#	src/Cryptography/ExtensionDoctrineCipherKeyStore.php
#	src/Store/DoctrineDbalStore.php
#	src/Store/StreamDoctrineDbalStore.php
#	src/Subscription/Engine/GapResolverStoreMessageLoader.php
#	src/Subscription/Store/DoctrineSubscriptionStore.php
#	tests/Integration/Store/DoctrineDbalStoreTest.php
#	tests/Integration/Store/StreamDoctrineDbalStoreTest.php
#	tests/Unit/Console/Command/SubscriptionStatusCommandTest.php
#	tests/Unit/Message/Serializer/DefaultHeadersSerializerTest.php
#	tests/Unit/Metadata/Message/AttributeMessageHeaderRegistryFactoryTest.php
#	tests/Unit/Metadata/Message/MessageHeaderRegistryTest.php
#	tests/Unit/Store/DoctrineDbalStoreTest.php
@github-actions

github-actions Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Author

Hello 👋

here is the most recent benchmark result:

SplitStreamBench
================

+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                         | time (kde mode)                                     | memory                                     |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                 | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad10000Events () | 1.550ms (±0.00%)   | 1.814ms (±0.00%)   | -14.60%   | 35.774mb        | 36.295mb   | -1.43%      |
| benchSave10000Events () | 312.989ms (±0.00%) | 374.987ms (±0.00%) | -16.53%   | 35.909mb        | 36.430mb   | -1.43%      |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SimpleSetupTaggableStoreBench
=============================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 785.100μs (±0.00%) | 1.079ms (±0.00%)   | -27.27%   | 36.312mb        | 36.246mb   | +0.18%      |
| benchLoad10000Events ()                | 40.934ms (±0.00%)  | 42.488ms (±0.00%)  | -3.66%    | 36.312mb        | 36.247mb   | +0.18%      |
| benchSave1Event ()                     | 944.000μs (±0.00%) | 1.037ms (±0.00%)   | -8.92%    | 36.312mb        | 36.246mb   | +0.18%      |
| benchSave10000Events ()                | 197.193ms (±0.00%) | 199.874ms (±0.00%) | -1.34%    | 36.312mb        | 36.358mb   | -0.13%      |
| benchSave10000Aggregates ()            | 5.358s (±0.00%)    | 6.437s (±0.00%)    | -16.77%   | 36.312mb        | 36.247mb   | +0.18%      |
| benchSave10000AggregatesTransaction () | 3.291s (±0.00%)    | 3.231s (±0.00%)    | +1.84%    | 36.312mb        | 36.247mb   | +0.18%      |
| benchAppend1Event ()                   | 1.134ms (±0.00%)   | 1.184ms (±0.00%)   | -4.22%    | 36.312mb        | 36.247mb   | +0.18%      |
| benchAppend100Events ()                | 5.033ms (±0.00%)   | 5.116ms (±0.00%)   | -1.62%    | 36.312mb        | 36.247mb   | +0.18%      |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SubscriptionEngineBench
=======================

+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
|                           | time (kde mode)                               | memory                                     |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
| subject                   | Tag: <current>  | Tag: base       | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
| benchHandle10000Events () | 1.628s (±0.00%) | 1.558s (±0.00%) | +4.49%    | 48.301mb        | 48.301mb   | 0.00%       |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+

NoopSubscriptionEngineBench
===========================

+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
|                           | time (kde mode)                                   | memory                                     |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| subject                   | Tag: <current>    | Tag: base         | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| benchHandle10000Events () | 61.946ms (±0.00%) | 59.771ms (±0.00%) | +3.64%    | 48.301mb        | 48.301mb   | 0.00%       |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+

SimpleSetupStreamStoreBench
===========================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 921.300μs (±0.00%) | 969.100μs (±0.00%) | -4.93%    | 35.146mb        | 35.146mb   | 0.00%       |
| benchLoad10000Events ()                | 43.009ms (±0.00%)  | 39.116ms (±0.00%)  | +9.95%    | 35.146mb        | 35.146mb   | 0.00%       |
| benchSave1Event ()                     | 1.028ms (±0.00%)   | 999.800μs (±0.00%) | +2.83%    | 35.146mb        | 35.146mb   | 0.00%       |
| benchSave10000Events ()                | 194.578ms (±0.00%) | 186.627ms (±0.00%) | +4.26%    | 35.146mb        | 35.146mb   | 0.00%       |
| benchSave10000Aggregates ()            | 5.536s (±0.00%)    | 5.349s (±0.00%)    | +3.49%    | 35.147mb        | 35.147mb   | 0.00%       |
| benchSave10000AggregatesTransaction () | 3.315s (±0.00%)    | 3.153s (±0.00%)    | +5.15%    | 35.147mb        | 35.147mb   | 0.00%       |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SubscriptionEngineBatchBench
============================

+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
|                           | time (kde mode)                                   | memory                                     |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| subject                   | Tag: <current>    | Tag: base         | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| benchHandle10000Events () | 63.395ms (±0.00%) | 64.930ms (±0.00%) | -2.36%    | 35.726mb        | 35.726mb   | 0.00%       |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+

PersonalDataBench
=================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 690.400μs (±0.00%) | 899.700μs (±0.00%) | -23.26%   | 37.008mb        | 36.875mb   | +0.36%      |
| benchLoad10000Events ()                | 101.421ms (±0.00%) | 102.093ms (±0.00%) | -0.66%    | 37.008mb        | 36.875mb   | +0.36%      |
| benchSave1Event ()                     | 1.545ms (±0.00%)   | 1.983ms (±0.00%)   | -22.06%   | 37.008mb        | 36.875mb   | +0.36%      |
| benchSave10000Events ()                | 265.804ms (±0.00%) | 261.387ms (±0.00%) | +1.69%    | 37.063mb        | 36.930mb   | +0.36%      |
| benchSave10000Aggregates ()            | 8.756s (±0.00%)    | 8.112s (±0.00%)    | +7.95%    | 37.008mb        | 36.875mb   | +0.36%      |
| benchSave10000AggregatesTransaction () | 6.394s (±0.00%)    | 5.891s (±0.00%)    | +8.54%    | 37.008mb        | 36.875mb   | +0.36%      |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SnapshotsBench
==============

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad10000EventsMissingSnapshot () | 42.728ms (±0.00%)  | 39.298ms (±0.00%)  | +8.73%    | 35.151mb        | 35.151mb   | 0.00%       |
| benchLoad10000Events ()                | 720.900μs (±0.00%) | 706.000μs (±0.00%) | +2.11%    | 35.151mb        | 35.151mb   | 0.00%       |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

CommandToQueryBench
===================

+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
|                | time (kde mode)                                 | memory                                     |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
| subject        | Tag: <current>   | Tag: base        | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
| benchCreate () | 2.703ms (±0.00%) | 2.651ms (±0.00%) | +1.95%    | 5.057mb         | 5.057mb    | 0.00%       |
| benchUpdate () | 7.023ms (±0.00%) | 3.609ms (±0.00%) | +94.59%   | 5.067mb         | 5.067mb    | 0.00%       |
| benchBoth ()   | 6.755ms (±0.00%) | 5.589ms (±0.00%) | +20.86%   | 5.389mb         | 5.232mb    | +3.02%      |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+

This comment gets update everytime a new commit comes in!

…Store

The fixes that came in with the 3.22 upmerge only touched the stream store.
The taggable store had the same problems: the event id criterion was bound
as array parameter, the mysql/mariadb lock was released before the commit,
and a failed lock acquisition left hasLock set so later calls skipped locking.
configureSchema also compared connection instances instead of checking for
the same database.

The integration tests added for the stream store are ported as well.
@DavidBadura
DavidBadura merged commit 51c0765 into 4.0.x Oct 3, 2026
37 of 39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants