Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
e840281
fix(driver): snapshot primaryNode in read fallbacks, clear lastConnec…
sboesebeck Aug 6, 2026
c239741
fix(inmem): updateUser preserves mechanism set, subset-only mechanism…
sboesebeck Aug 6, 2026
f054168
fix(poppydb): atomic leadership flip, never-registered probe semantic…
sboesebeck Aug 6, 2026
ca3a5db
fix(poppydb): rs.status reports a peer that died with the failover as…
sboesebeck Aug 6, 2026
b7ea042
fix(scripts): startPoppyDB.sh really skips a busy port instead of clo…
sboesebeck Aug 6, 2026
c2586fb
docs: changelog entries for the 2026-08-06 review fix wave
sboesebeck Aug 6, 2026
59e75c9
feat(inmem): mongod-compatible dropUser + customData support for crea…
sboesebeck Aug 6, 2026
cd2c17f
feat(poppydb): dropUser is a primary-only wire command and replicates…
sboesebeck Aug 6, 2026
18359d6
docs(poppydb): dropUser in user-replication docs, users-file mechanis…
sboesebeck Aug 6, 2026
a0663ee
docs(testing): dedicated Wire Proxy guide - fault injection, monitori…
sboesebeck Aug 6, 2026
5df91f3
docs: full 3-node WireProxy example; fix all mkdocs link/nav warnings
sboesebeck Aug 6, 2026
c1564fa
docs(readme): de-rot both READMEs - versionless title, 6.2.10 snippet…
sboesebeck Aug 6, 2026
421257f
feat(release): release.sh bumps README version snippets - they used t…
sboesebeck Aug 6, 2026
6fe707f
docs(readme): promote PoppyDB to a first-class section with how-tos
sboesebeck Aug 6, 2026
9f8ff35
docs(readme): comparison table gains a 'Morphium + PoppyDB' column
sboesebeck Aug 6, 2026
ad27927
docs(readme): real benchmark numbers for the PoppyDB throughput cell
sboesebeck Aug 6, 2026
cc453ed
docs(readme): split throughput into one-way and round-trip rows - the…
sboesebeck Aug 6, 2026
bac4775
test(bench): one-way messaging throughput benchmark (manual tag)
sboesebeck Aug 6, 2026
11c69ac
docs: measured one-way messaging throughput replaces the historic ~8K…
sboesebeck Aug 6, 2026
eb49bce
docs(bench): clarify provenance of the retired ~8K figure - plain wri…
sboesebeck Aug 6, 2026
d42a52e
docs(readme): PoppyDB CLI how-to - a throwaway MongoDB for any test s…
sboesebeck Aug 6, 2026
a8db0e1
docs(readme): PoppyDB CLI is production-ready as a messaging backend …
sboesebeck Aug 6, 2026
547ee6c
docs(readme): measured Kafka comparison and per-message cost breakdown
sboesebeck Aug 6, 2026
a8d7d8e
feat: add quarkus-morphium extension as optional module (#267)
Bardioc1977 Aug 7, 2026
8e1b047
perf(inmem/poppydb): O(1) duplicate-_id insert pre-check via the _id_…
sboesebeck Aug 7, 2026
5e37411
docs(inmem): fix lying shallow-copy javadoc - rename to deepCopyAndNo…
sboesebeck Aug 7, 2026
6089c04
fix(index): remove trailing underscore from auto-generated index name…
Bardioc1977 Aug 7, 2026
6dd3bcb
Merge remote-tracking branch 'origin/develop' into develop
sboesebeck Aug 7, 2026
b873ab9
fix(poppydb): stop priority-denied vote requests from resetting the d…
sboesebeck Aug 7, 2026
ce0e4c6
perf(messaging): use change stream fullDocument for non-exclusive mes…
sboesebeck Aug 7, 2026
b1eeb86
fix(poppydb): silence change-stream events during replication initial…
sboesebeck Aug 7, 2026
5866558
fix(inmem): invalidate index store for touched collections on abort (…
Bardioc1977 Aug 7, 2026
cb956d7
test(poppydb): make testPriorityDenialDoesNotStarveOwnElectionTimer d…
sboesebeck Aug 7, 2026
2984091
fix(inmem): reuse an index store only for the caller it was built for…
Bardioc1977 Aug 7, 2026
3592c21
fix(messaging): fire @PostLoad on change stream fullDocument fast path
sboesebeck Aug 7, 2026
a40e489
docs(changelog): add deferred entry for the messaging fullDocument fa…
sboesebeck Aug 7, 2026
71204bf
docs(perf): refresh one-way throughput figures, flag round-trip numbe…
sboesebeck Aug 7, 2026
b5478b1
docs(perf): attribute one-way figures to their actual machines (M1 Ma…
sboesebeck Aug 7, 2026
745fc4c
fix(test): accept RST during connect() in WireProxyTest reset-refusal…
sboesebeck Aug 7, 2026
aa3745d
docs(perf): add MongoDB-RS one-way figures from the Mac Studio client…
sboesebeck Aug 7, 2026
836c40e
docs(perf): round-trip re-measured with Morpheus - 8-18% lower median…
sboesebeck Aug 7, 2026
45f9c31
fix(inmem): hand the index store to the new owner instead of evicting…
Bardioc1977 Aug 9, 2026
3be84d0
fix(runtests): parallel mode left a stats loop running, never cleaned…
sboesebeck Aug 9, 2026
22d54e8
perf(inmem): stop deep-copying the change-stream before-image twice p…
sboesebeck Aug 9, 2026
9a876e9
fix(inmem): rebuild the TTL queue on enqueue too, not only on sweep (…
sboesebeck Aug 9, 2026
6b12c54
docs: prepare 6.3.0 release - changelog cut, migration guide completed
sboesebeck Aug 9, 2026
42454e5
fix(test): wait for the DualChannel change streams to go live instead…
sboesebeck Aug 9, 2026
0884518
docs: correct the DualChannelMessaging interoperability claim, add 6.…
sboesebeck Aug 10, 2026
9c596c8
Update README version snippets to 6.3.0 for release
sboesebeck Aug 10, 2026
5ecc724
[maven-release-plugin] prepare release v6.3.0
sboesebeck Aug 10, 2026
e0ff299
[maven-release-plugin] prepare for next development iteration
sboesebeck Aug 10, 2026
0e7f039
perf(messaging): server-side topic filter on the main change stream
IainJennings Aug 10, 2026
95d701d
fix(messaging): topic filter must also match V5-legacy 'name'-only do…
IainJennings Aug 10, 2026
c651566
fix(messaging): take the countAll out of the lock-release change-stre…
sboesebeck Aug 10, 2026
5a9a648
Merge pull request #284: perf(messaging): server-side topic filter on…
IainJennings Aug 10, 2026
7b90d38
Merge pull request #287: fix(messaging): take the countAll out of the…
IainJennings Aug 10, 2026
3e7e6a7
fix(inmem): a full-document replacement emitted no change-stream even…
sboesebeck Aug 10, 2026
598ac35
fix(inmem): keep the query planner off multikey indexes - equality on…
sboesebeck Aug 10, 2026
e099df5
test(inmem): let the #288 watch loop terminate instead of leaking its…
sboesebeck Aug 10, 2026
11618e6
build: cap the forked test JVMs at 2g instead of letting them size of…
sboesebeck Aug 10, 2026
6a32a1b
perf(poppydb): apply replication events on arrival instead of waiting…
sboesebeck Aug 11, 2026
1a4f977
fix(inmem): make collection and index-descriptor creation atomic - co…
sboesebeck Aug 11, 2026
3998f22
fix(inmem): flag mid-path arrays as multikey - a dotted-path index ov…
sboesebeck Aug 11, 2026
27a522c
fix(messaging): retry failed main-CS rebuilds and stop mutating the l…
sboesebeck Aug 11, 2026
7c9d7f0
build: point the parent scm tag back to HEAD - the release plugin lef…
sboesebeck Aug 11, 2026
f66b25c
fix(inmem): deliver change-stream events in write order - the cached …
sboesebeck Aug 11, 2026
2332acd
fix(inmem): store() of an existing document emits 'update' with a del…
sboesebeck Aug 11, 2026
c59d357
feat(messaging): detect implementation mismatches between queue parti…
sboesebeck Aug 11, 2026
609b323
fix(messaging): participants collection needs primary reads - the mis…
sboesebeck Aug 11, 2026
72ae7fe
documentation update - timings and measurements update
sboesebeck Aug 11, 2026
19363e6
Update README version snippets to 6.3.1 for release
sboesebeck Aug 11, 2026
9ea2155
[maven-release-plugin] prepare release v6.3.1
sboesebeck Aug 11, 2026
2decf98
[maven-release-plugin] prepare for next development iteration
sboesebeck Aug 11, 2026
3457176
docs: add the missing 6.3.1 changelog section, document the implement…
sboesebeck Aug 11, 2026
dc89604
fix(scripts): startPoppyDB.sh build broke on missing morphium test-jar
sboesebeck Aug 12, 2026
22c04f3
docs: exclusive request/reply measurements mongo vs poppydb (2026-08-12)
sboesebeck Aug 12, 2026
40f862f
feat(poppydb): mongodump/mongorestore compatibility (mongo-tools E2E)
sboesebeck Aug 12, 2026
6ccc2bd
fix(inmem): literal array queries support whole-array equality
sboesebeck Aug 12, 2026
7576a16
docs: restore the 6.3.1 changelog heading
sboesebeck Aug 12, 2026
6cca6d8
fix(inmem): stale index store can no longer be published past a concu…
sboesebeck Aug 13, 2026
d103bdb
chore(messaging): CHANGESTREAM DUPLICATE CAUGHT is normal operation, …
sboesebeck Aug 13, 2026
26f50f6
fix(messaging): tolerate legacy documents with processed_by: null (#291)
sboesebeck Aug 13, 2026
b98c357
test: BulkInsertTest waits for counts instead of sleep/assert
sboesebeck Aug 13, 2026
5436214
test: replace sleep+assert with condition waits in the top flaky-patt…
sboesebeck Aug 13, 2026
031f4f5
docs: changelog entry for the sleep+assert test hardening (#292)
sboesebeck Aug 13, 2026
45418d6
test: migrate all bare assert statements to JUnit assertTrue (#292)
sboesebeck Aug 13, 2026
1106924
test: retire the ncmessaging (polling-only) test package (#292)
sboesebeck Aug 13, 2026
d6b5e35
fix(inmem): unique partial indexes only enforce uniqueness inside the…
sboesebeck Aug 13, 2026
e36026a
fix(inmem): close the partial-unique-index gaps from the 2026-08-13 r…
sboesebeck Aug 13, 2026
4d71718
test: idCacheTest waits for the async clear before restoring (CI 2026…
sboesebeck Aug 13, 2026
792c805
Delete logs directory
sboesebeck Aug 13, 2026
051db5e
test: null-safe wait conditions in the hardened suites (CI 2026-08-13)
sboesebeck Aug 13, 2026
4b63063
added new logos
sboesebeck Aug 13, 2026
ad5773a
documentation fix
sboesebeck Aug 13, 2026
be1be54
test: fix broken null-safe wait lambdas from 051db5ea7 (compile error)
sboesebeck Aug 13, 2026
0eae7be
docs: feature PoppyDB prominently on the documentation start page
sboesebeck Aug 13, 2026
4f68a4f
docs: link the published PoppyDB documentation page from both READMEs
sboesebeck Aug 13, 2026
e86adaa
docs: make the start-page PoppyDB logo clickable and name the guide l…
sboesebeck Aug 13, 2026
0ac1d18
docs: dark-mode logo variants for GitHub READMEs and the documentatio…
sboesebeck Aug 13, 2026
24ec2a4
fix(writer): buffered remove-by-query deletes all matches, not just one
sboesebeck Aug 13, 2026
a61c6b8
fixing logo
sboesebeck Aug 13, 2026
f60fe5a
fixing paths
sboesebeck Aug 13, 2026
762da10
updating documentation
sboesebeck Aug 13, 2026
7df88c9
updated morphium features
sboesebeck Aug 13, 2026
79dc8da
perf(mapper): cache type-id class resolution and no-arg constructor l…
sboesebeck Aug 13, 2026
149e3b4
build: exclude benchmark tag from default test runs
sboesebeck Aug 13, 2026
2ab4974
fix(inmem): map mongo collation strength 1-5 to java Collator levels
sboesebeck Aug 14, 2026
5f6667e
fix(poppydb): find fast path honours the client's collation (#252 fol…
sboesebeck Aug 14, 2026
1ae1aa1
fix(inmem): bulk-insert writeErrors carry original batch indexes, n c…
sboesebeck Aug 14, 2026
10f4ed6
fix(poppydb): commit/abortTransaction failures reach the client inste…
sboesebeck Aug 14, 2026
be93e38
docs(poppydb): COMMAND_EXECUTOR comment stops claiming command offloa…
sboesebeck Aug 14, 2026
2a1cb41
docs: changelog entries for the poppydb-review fix batch
sboesebeck Aug 14, 2026
88acb76
feat(inmem/poppydb): byte budget for the change-stream replay buffer
sboesebeck Aug 14, 2026
3471bac
fix(poppydb): j:true write concern fails honestly instead of promisin…
sboesebeck Aug 14, 2026
b15c287
fix(poppydb): secondaries reject reads without an explicit read prefe…
sboesebeck Aug 14, 2026
2e0607f
feat(poppydb): hello reply carries an honest poppyCapabilities document
sboesebeck Aug 14, 2026
6f0b215
fix(poppydb): election log-recency check is fed by the real replicati…
sboesebeck Aug 14, 2026
13812ec
fix(poppydb): vote safety uses the honest empty-vs-data invariant, th…
sboesebeck Aug 14, 2026
37c20bf
fix(poppydb): freshly-synced nodes report their true replication posi…
sboesebeck Aug 14, 2026
5fe8467
fix(poppydb): empty nodes hold candidacy while data-bearing peers exist
sboesebeck Aug 14, 2026
bdfb78a
fix(poppydb): never resync destructively from a primary with regresse…
gbigenios Aug 14, 2026
690ecc2
fix(poppydb): paced refusal loop, sequence carry-over across leader c…
gbigenios Aug 14, 2026
ba20ad9
test(poppydb): empty-node restart must never wipe the replica set
gbigenios Aug 14, 2026
43dcb23
docs: changelog for the empty-node wipe fixes
gbigenios Aug 14, 2026
0204180
fix(poppydb): carry-over survives failed replication starts
gbigenios Aug 14, 2026
2493e27
docs: scope the election guarantee, split the two backoff mechanisms
gbigenios Aug 14, 2026
02b26f1
fix(poppydb): adopt the synced primary's sequence base after successf…
gbigenios Aug 14, 2026
d2d6e13
fix(poppydb): sequence regression guard only compares within the same…
gbigenios Aug 14, 2026
bd17da4
feat(test-results): record builder for the decoupled test-results store
sboesebeck Aug 13, 2026
7e111b3
fix(test-results): correct passed semantics for broken classes, exit …
sboesebeck Aug 13, 2026
b6be553
feat(test-results): append-only publisher for the test-results branch
sboesebeck Aug 13, 2026
4485b8a
fix(test-results): publisher hardening - no eval, validated filename,…
sboesebeck Aug 13, 2026
e23df0e
feat(test-results): half way through
sboesebeck Aug 13, 2026
b1b545b
feat(coverage): opt-in jacoco profile composing with the test heap cap
sboesebeck Aug 14, 2026
1f556dd
fix(coverage): late-bind argLine so the jacoco agent survives propert…
sboesebeck Aug 14, 2026
968bd64
chore(coverage): document reactor-wide profile scope, single-source t…
sboesebeck Aug 14, 2026
57b7147
feat(test-results): aggregator, release gate and badge generator
sboesebeck Aug 14, 2026
45df23b
fix(test-results): visible stale-run override warning, annotate only …
sboesebeck Aug 14, 2026
e26b96f
feat(release): test-results gate, GitHub release report and badges
sboesebeck Aug 14, 2026
812e323
fix(release): help printer follows the header block instead of a hard…
sboesebeck Aug 14, 2026
c236b00
docs: changelog entry for the test-results store
sboesebeck Aug 14, 2026
ca36a1a
fix(test-results): final-review fixes - no badge writes on failed gat…
sboesebeck Aug 14, 2026
e663731
refactor(release): test-results report instead of gate - transparency…
sboesebeck Aug 14, 2026
2e44132
feat(test-results): living release report - marker-based notes refres…
sboesebeck Aug 14, 2026
5d30b4b
fix(test-results): badge refresh independent of gh availability
sboesebeck Aug 14, 2026
6dda0f9
fix(test-results): skip notes update when no results qualify, honest …
sboesebeck Aug 14, 2026
eb6177d
fix(test-results): guard row detection independent of phase-name casing
sboesebeck Aug 14, 2026
51457eb
fix(test-results): store commits carry a fallback git identity
sboesebeck Aug 14, 2026
4528699
fix(test-results): resolve commit through the runtests.sh symlink, un…
sboesebeck Aug 14, 2026
0980ecf
fix(test-results): publisher and updater are CWD-independent
sboesebeck Aug 14, 2026
2081157
feat: add spring-boot-morphium as optional module
flgke81 Aug 5, 2026
45281bb
build: register spring-boot-morphium in extensions profile
flgke81 Aug 5, 2026
1cca09f
docs: add spring boot documentation and changelog entry
flgke81 Aug 5, 2026
4c2365f
build: include spring-boot-morphium in release bundle
flgke81 Aug 5, 2026
fa29930
fix(spring-boot): register MorphiumTransactionAspect as auto-configur…
flgke81 Aug 6, 2026
64a7cba
fix(spring-boot): honor @By bindings and dispatch CompletionStage der…
flgke81 Aug 6, 2026
06f59da
build(spring-boot): sync module version to 6.3.2-SNAPSHOT
flgke81 Aug 15, 2026
4f3d117
fix(spring-boot): apply Copilot review findings on PR #299
flgke81 Aug 15, 2026
a676cc4
fix(spring-boot): honour dynamic paging, delete counts, and async que…
flgke81 Aug 16, 2026
ab215e0
fix(spring-boot): join an active transaction instead of starting a se…
flgke81 Aug 16, 2026
767041f
perf(spring-boot): drop the entity pre-scan, it cost an extra scan
flgke81 Aug 16, 2026
0298f3f
test(spring-boot): cover the six review findings, asserting semantics
flgke81 Aug 16, 2026
b8cc572
docs(spring-boot): drop stray classgraph dependency and pre-scan claims
flgke81 Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
688 changes: 675 additions & 13 deletions CHANGELOG.md

Large diffs are not rendered by default.

281 changes: 239 additions & 42 deletions README.de.md

Large diffs are not rendered by default.

308 changes: 262 additions & 46 deletions README.md

Large diffs are not rendered by default.

Binary file added branding/brand-board.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions branding/brand-board.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions branding/morphium-logo-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added branding/morphium-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions branding/morphium-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added branding/morphium-mark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions branding/morphium-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions branding/poppydb-logo-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added branding/poppydb-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions branding/poppydb-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added branding/poppydb-mark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions branding/poppydb-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 4 additions & 2 deletions docs/architecture-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,12 @@ Aggregator<Order, OrderStats> agg = morphium.createAggregator(Order.class, Order

#### Cache Synchronization
**Cluster-aware caching** with synchronization:
- **WatchingCacheSynchronizer** - Uses MongoDB Change Streams
- **MessagingCacheSynchronizer** - Uses Morphium messaging
- **WatchingCacheSynchronizer** - Watches the underlying collections via MongoDB Change Streams; catches changes from any writer (not just Morphium), but needs a replica set
- **MessagingCacheSynchronizer** - Propagates invalidations via Morphium's own messaging; works on any backend (no replica set needed), but only sees writes made through Morphium
- **Manual cache control** for custom strategies

See [Developer Guide § Cache Synchronization](./developer-guide.md#cache-synchronization) for guidance on choosing between them.

#### Cache Strategies
```java
@Cache(
Expand Down
10 changes: 10 additions & 0 deletions docs/assets/brand/morphium-logo-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions docs/assets/brand/morphium-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions docs/assets/brand/morphium-mark-header.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions docs/assets/brand/morphium-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions docs/assets/brand/poppydb-logo-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions docs/assets/brand/poppydb-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions docs/assets/brand/poppydb-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions docs/assets/extra.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/* Swap brand logos with the Material color scheme toggle.
Two <img> tags are emitted per logo; exactly one is visible per scheme. */
.logo-dark {
display: none;
}

[data-md-color-scheme="slate"] .logo-light {
display: none;
}

[data-md-color-scheme="slate"] .logo-dark {
display: inline;
}
Loading