Skip to content

Merge release 2.0.2 into 2.1.x - #209

Merged
DavidBadura merged 6 commits into
2.1.xfrom
2.0.x-merge-up-into-2.1.x_Lj8Xiqyx
Sep 23, 2026
Merged

DavidBadura merged 6 commits into
2.1.xfrom
2.0.x-merge-up-into-2.1.x_Lj8Xiqyx

Conversation

@github-actions

Copy link
Copy Markdown

Release Notes for 2.0.2

2.0.x bugfix release (patch)

2.0.2

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

The cache keys used a colon, which is a reserved character in PSR-6 and
PSR-16, so the decorators failed with any compliant cache like symfony/cache.
Ids and subject ids are now hashed, and a cache hit is only accepted if the
cached key really belongs to the requested id or subject.

Removing keys also left entries behind: removeWithSubjectId() kept the
cached keys by id and remove() kept the cached key by subject, so deleted
personal data could still be decrypted until the cache expired. The
decorators now remember the cached key ids per subject and evict all of
them.
Covers the exact cache key format and removeWithSubjectId() after store(),
which were not caught by the existing tests. Also drops the rememberKeyId()
call in currentKeyFor(), it only caches the entry by subject, which is
evicted directly anyway.
Fix cache keys and eviction of the cipher key store decorators
@DavidBadura
DavidBadura merged commit ae91a25 into 2.1.x Sep 23, 2026
17 checks passed
@DavidBadura
DavidBadura deleted the 2.0.x-merge-up-into-2.1.x_Lj8Xiqyx branch September 23, 2026 20:17
@github-actions

Copy link
Copy Markdown
Author

Hello 👋

here is the most recent benchmark result:

StackHydratorBench
==================

+-------------------------------+-----------------------------------------+------------------------------+
|                               | time (kde mode)                         | memory                       |
+-------------------------------+--------------------+--------------------+-----------------+------------+
| subject                       | Tag: <current>     | Tag: base          | Tag: <current>  | Tag: base  |
+-------------------------------+--------------------+--------------------+-----------------+------------+
| benchHydrate1Object ()        | 2.200μs (±0.00%)   | 2.000μs (±0.00%)   | 3.288mb         | 3.269mb    |
| benchExtract1Object ()        | 2.400μs (±0.00%)   | 2.600μs (±0.00%)   | 3.288mb         | 3.269mb    |
| benchHydrate1000Objects ()    | 1.611ms (±0.00%)   | 1.627ms (±0.00%)   | 3.492mb         | 3.497mb    |
| benchExtract1000Objects ()    | 1.622ms (±0.00%)   | 1.676ms (±0.00%)   | 3.481mb         | 3.487mb    |
| benchHydrate1000000Objects () | 902.642ms (±0.00%) | 819.446ms (±0.00%) | 3.492mb         | 3.497mb    |
| benchExtract1000000Objects () | 984.164ms (±0.00%) | 999.470ms (±0.00%) | 3.009mb         | 3.008mb    |
+-------------------------------+--------------------+--------------------+-----------------+------------+

HydratorWithLazyBench
=====================

+------------------------------------------+-----------------------------------------+------------------------------+
|                                          | time (kde mode)                         | memory                       |
+------------------------------------------+--------------------+--------------------+-----------------+------------+
| subject                                  | Tag: <current>     | Tag: base          | Tag: <current>  | Tag: base  |
+------------------------------------------+--------------------+--------------------+-----------------+------------+
| benchHydrate1Object ()                   | 0.400μs (±0.00%)   | 0.800μs (±0.00%)   | 2.772mb         | 2.772mb    |
| benchHydrate1ObjectTriggerInit ()        | 2.400μs (±0.00%)   | 2.800μs (±0.00%)   | 2.772mb         | 2.772mb    |
| benchHydrate1000Objects ()               | 252.000μs (±0.00%) | 262.000μs (±0.00%) | 2.817mb         | 2.817mb    |
| benchHydrate1000ObjectsTriggerInit ()    | 2.085ms (±0.00%)   | 2.143ms (±0.00%)   | 2.931mb         | 2.930mb    |
| benchHydrate1000000Objects ()            | 139.708ms (±0.00%) | 145.911ms (±0.00%) | 2.817mb         | 2.817mb    |
| benchHydrate1000000ObjectsTriggerInit () | 1.273s (±0.00%)    | 1.304s (±0.00%)    | 2.931mb         | 2.930mb    |
+------------------------------------------+--------------------+--------------------+-----------------+------------+

StackHydratorWithCryptographyBench
==================================

+-------------------------------+--------------------------------------+------------------------------+
|                               | time (kde mode)                      | memory                       |
+-------------------------------+-------------------+------------------+-----------------+------------+
| subject                       | Tag: <current>    | Tag: base        | Tag: <current>  | Tag: base  |
+-------------------------------+-------------------+------------------+-----------------+------------+
| benchHydrate1Object ()        | 4.400μs (±0.00%)  | 4.200μs (±0.00%) | 2.820mb         | 2.820mb    |
| benchExtract1Object ()        | 57.200μs (±0.00%) | 8.800μs (±0.00%) | 2.836mb         | 2.820mb    |
| benchHydrate1000Objects ()    | 2.784ms (±0.00%)  | 2.912ms (±0.00%) | 3.115mb         | 3.114mb    |
| benchExtract1000Objects ()    | 5.453ms (±0.00%)  | 5.889ms (±0.00%) | 3.203mb         | 3.200mb    |
| benchHydrate1000000Objects () | 1.522s (±0.00%)   | 1.488s (±0.00%)  | 3.115mb         | 3.114mb    |
| benchExtract1000000Objects () | 4.162s (±0.00%)   | 4.242s (±0.00%)  | 3.201mb         | 3.200mb    |
+-------------------------------+-------------------+------------------+-----------------+------------+

HydratorBench
=============

+-------------------------------+-----------------------------------------+------------------------------+
|                               | time (kde mode)                         | memory                       |
+-------------------------------+--------------------+--------------------+-----------------+------------+
| subject                       | Tag: <current>     | Tag: base          | Tag: <current>  | Tag: base  |
+-------------------------------+--------------------+--------------------+-----------------+------------+
| benchHydrate1Object ()        | 2.200μs (±0.00%)   | 2.000μs (±0.00%)   | 2.772mb         | 2.772mb    |
| benchExtract1Object ()        | 2.800μs (±0.00%)   | 2.400μs (±0.00%)   | 2.772mb         | 2.772mb    |
| benchHydrate1000Objects ()    | 1.650ms (±0.00%)   | 1.768ms (±0.00%)   | 3.019mb         | 3.019mb    |
| benchExtract1000Objects ()    | 1.677ms (±0.00%)   | 1.668ms (±0.00%)   | 3.008mb         | 3.008mb    |
| benchHydrate1000000Objects () | 832.096ms (±0.00%) | 838.293ms (±0.00%) | 3.019mb         | 3.019mb    |
| benchExtract1000000Objects () | 948.301ms (±0.00%) | 1.042s (±0.00%)    | 3.009mb         | 3.008mb    |
+-------------------------------+--------------------+--------------------+-----------------+------------+

HydratorWithCryptographyBench
=============================

+-------------------------------+--------------------------------------+------------------------------+
|                               | time (kde mode)                      | memory                       |
+-------------------------------+-------------------+------------------+-----------------+------------+
| subject                       | Tag: <current>    | Tag: base        | Tag: <current>  | Tag: base  |
+-------------------------------+-------------------+------------------+-----------------+------------+
| benchHydrate1Object ()        | 6.000μs (±0.00%)  | 4.200μs (±0.00%) | 2.820mb         | 2.820mb    |
| benchExtract1Object ()        | 64.600μs (±0.00%) | 9.200μs (±0.00%) | 2.836mb         | 2.820mb    |
| benchHydrate1000Objects ()    | 2.973ms (±0.00%)  | 3.039ms (±0.00%) | 3.115mb         | 3.114mb    |
| benchExtract1000Objects ()    | 5.787ms (±0.00%)  | 5.923ms (±0.00%) | 3.203mb         | 3.200mb    |
| benchHydrate1000000Objects () | 1.554s (±0.00%)   | 1.523s (±0.00%)  | 3.115mb         | 3.114mb    |
| benchExtract1000000Objects () | 4.196s (±0.00%)   | 4.218s (±0.00%)  | 3.201mb         | 3.200mb    |
+-------------------------------+-------------------+------------------+-----------------+------------+

This comment gets update everytime a new commit comes in!

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.

1 participant