Adopt the new CoreJvm storage API - #181
Conversation
Allocate a distinct RDBMS table per the combination of a record specification and a `StorageGroup`, as the new CoreJvm storage SPI expects of vendors. Without the group in the table identity, the event journals of all entity types — and the event log — would share one table (`sourceType` is `Event` for each), and the state history of an entity type would collide with its latest-state storage. - `TableNames.of(recordType, group)` composes grouped table names from the group name and the record type, e.g. `spine_test_storage_StgProject_Event`. - `TableSpecs` caches specifications by the `(sourceType, recordType, group)` key in a `ConcurrentHashMap`: the state history storage may be created concurrently on delivery worker threads. Custom table names apply only to ungrouped storages. - `JdbcStorageFactory` and `JdbcRecordStorage` thread the group through; the group-less paths delegate with `null` and behave as before. - The dead `jdbc.aggregate` package is removed along with its dangling Javadoc link to the deleted `AggregateStorage`. New Kotlin specifications cover the allocation contract and the JDBC round-trips of `EntityEventStorage` and `EntityStateHistoryStorage`, including the `EntityStateKey` identifiers, the same-key overwrite, `stateAt`, `trim`, `truncate`, and the concurrent storage creation. `docs/tables.md` now describes the grouped tables. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #181 +/- ##
==========================================
+ Coverage 88.85% 89.23% +0.37%
==========================================
Files 69 69
Lines 1535 1561 +26
Branches 76 77 +1
==========================================
+ Hits 1364 1393 +29
+ Misses 133 131 -2
+ Partials 38 37 -1 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: de8c9afef6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
A custom table name and a custom column mapping are registered under the type the user passes to the factory builder — for an entity, its state type, as `docs/tables.md` shows with `setTableName(TaskView.class, ...)`. The entity state travels in `RecordSpec.sourceType()`, while `recordType()` is `EntityRecord`, so the previous lookups by the record type could never match an entity table. For standalone records, the source type equals the record type, so their behavior is unchanged. A custom name still applies only to the storages outside any group: honoring one for the state history would collide it with the latest-state table of the same entity. A custom mapping, being keyed by the source type, now also serves the grouped tables of its entity. Addresses the Codex review of #181; the mismatch predates this branch — `sourceType()` has carried the entity state since CoreJvm `2.0.0-SNAPSHOT.380` — but this branch touches the lookups, so it is fixed here, with regression tests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Aligns the module on `org.jspecify.annotations.Nullable`, matching the annotation of the CoreJvm storage seam, and resolves the mixed-library note from the review of #181. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A grouped table — the event journal or the state history of an entity — can now be given a custom name via the new `setTableName(stateType, recordType, name)` overload of `JdbcStorageFactory.Builder`. The registration addresses a table the way its identity works: by the storage group — named by the framework after the entity state type — paired with the type of the stored records. The single-type `setTableName` keeps applying to the ungrouped storages only, as its key cannot address a grouped table without collisions. `TableSpecs` also moves to the JSpecify `Nullable`, following the module-wide alignment. Requested in the review of #181, completing the naming feature. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Apply the English-style catalog across the project-owned prose — Javadoc,
KDoc, code comments, and the Markdown docs. The fixes cover restrictive
`which` → `that`, missing articles, verb complementation
(`allows to do` → `allows doing`), genuine typos (`RDMBS`, `modifiers`
for `modifies`, `type or` for `type of`, `in` for `is`), `-ly` adverbs
freed of hyphens, and comma mechanics.
A few defects beyond the catalog are repaired as well: a garbled
sentence and a subjectless clause in `DataSourceConfig`, wrong
prepositions in `DeleteOne` and `OperationFactory`, `basing on` →
`based on`, a possessive `which` → `whose`, and a malformed
`{@code}` tag in `ContainsQuery`.
The sweep covers the whole repository; `buildSrc` and the other
config-distributed files are excluded as upstream-owned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Migrates jdbc-storage to the updated CoreJvm de-event-sourcing storage SPI (CoreJvm 2.0.0-SNAPSHOT.522) and adds proper StorageGroup-aware table allocation so per-entity histories (event journal + state history) don’t collide with each other or with ungrouped tables.
Changes:
- Implemented grouped-table identity and naming (
(group, recordType)), wired through JDBC storage creation, and updated table-spec caching for concurrent storage creation. - Added/updated test coverage for grouped table allocation, entity history round-trips, and concurrent history storage creation.
- Updated docs, dependency pins, and various build/tooling/supporting code to match the new API and nullability annotations.
Reviewed changes
Copilot reviewed 206 out of 212 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| version.gradle.kts | Bumps published version to .110. |
| rdbms/src/test/kotlin/io/spine/server/storage/jdbc/record/given/HistoryStorageTestEnv.kt | Test fixtures for grouped/history storage specs. |
| rdbms/src/test/kotlin/io/spine/server/storage/jdbc/record/ConcurrentHistoryCreationSpec.kt | Concurrency test for history storage creation/table convergence. |
| rdbms/src/test/java/io/spine/server/storage/jdbc/record/TableNamesTest.java | Adds coverage for grouped table name composition + NPE defaults. |
| rdbms/src/test/java/io/spine/server/storage/jdbc/record/JdbcRecordStorageTest.java | Updates to Core fixture rename (DelegatingRecordStorageTest). |
| rdbms/src/test/java/io/spine/server/storage/jdbc/query/QueryPredicatesTest.java | Updates predicate tests to new scanning entry point + refactor helper placement. |
| rdbms/src/test/java/io/spine/server/storage/jdbc/mysql/MysqlTests.java | Aligns nullability annotation to JSpecify. |
| rdbms/src/test/java/io/spine/server/storage/jdbc/mysql/MysqlRecordStorageTest.java | Updates to Core fixture rename (DelegatingRecordStorageTest). |
| rdbms/src/test/java/io/spine/server/storage/jdbc/mysql/MysqlAggregateStorageTest.java | Removes aggregate fixture test (upstream fixture removed). |
| rdbms/src/test/java/io/spine/server/storage/jdbc/aggregate/JdbcAggregateStorageTruncationTest.java | Removes aggregate truncation fixture test (upstream fixture removed). |
| rdbms/src/test/java/io/spine/server/storage/jdbc/aggregate/JdbcAggregateStorageTest.java | Removes aggregate fixture test (upstream fixture removed). |
| rdbms/src/main/java/io/spine/server/storage/jdbc/TypeMappingBuilder.java | Minor Javadoc wording tweak. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/type/JdbcColumnMapping.java | Javadoc wording/grammar tweaks. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/Type.java | Javadoc wording tweaks for enum docs. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/TableColumn.java | Aligns nullability annotation to JSpecify. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/Sql.java | Javadoc formatting tweak. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/record/TableNames.java | Adds grouped table name composition API. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/record/RecordTable.java | Javadoc wording tweak. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/record/JdbcTableSpec.java | Aligns nullability annotation + minor doc wording. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/record/JdbcRecordStorage.java | Wires @Nullable StorageGroup into table identity via factory table-spec lookup. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/record/JdbcRecord.java | Aligns nullability annotation + minor doc wording. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/record/column/IdColumn.java | Doc punctuation tweak. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/record/column/BytesColumn.java | Aligns nullability annotation to JSpecify. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/WriteQuery.java | Aligns nullability annotation to JSpecify. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/SelectMessagesByQuery.java | Javadoc formatting/grammar fixes. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/SelectMessageByIdQuery.java | Aligns nullability annotation to JSpecify. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/reader/IndexColumnReaders.java | Javadoc grammar tweaks. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/QueryPredicates.java | Modernizes switch usage + clarifies suppression; keeps predicate construction behavior. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/ModifyQuery.java | Javadoc grammar fixes. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/DbIterator.java | Javadoc wording fixes. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/ContainsQuery.java | Javadoc line-wrap/grammar fix. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/query/AbstractQuery.java | Aligns nullability annotation to JSpecify. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/operation/WriteOne.java | Javadoc wording tweaks. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/operation/OperationFactory.java | Javadoc grammar tweaks across factory methods. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/operation/DeleteOne.java | Javadoc correction (“from” database). |
| rdbms/src/main/java/io/spine/server/storage/jdbc/operation/CreateTable.java | Minor Javadoc wording tweak. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/engine/PredefinedEngine.java | Javadoc grammar tweaks. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/delivery/SessionRecordColumn.java | Javadoc grammar tweaks. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/delivery/JdbcShardedWorkRegistry.java | Javadoc grammar tweak. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/DefaultDataSourceWrapper.java | Uses pattern matching instanceof for cleaner close logic. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/DataSourceConfig.java | Aligns nullability annotation + prose fixes. |
| rdbms/src/main/java/io/spine/server/storage/jdbc/config/CreateOperationFactory.java | Javadoc grammar tweak. |
| gradlew.bat | Gradle wrapper script change (generated file). |
| gradlew | Gradle wrapper script change (generated file). |
| gradle/wrapper/gradle-wrapper.properties | Gradle wrapper version bump. |
| docs/type-mapping.md | Doc wording corrections. |
| docs/tables.md | Documents grouped tables + customization rules for grouped names. |
| docs/queries.md | Doc wording/clarity improvements. |
| docs/dependencies/pom.xml | Updates documented dependency versions/pins. |
| CONTRIBUTING.md | Minor grammar fix. |
| buildSrc/src/test/kotlin/io/spine/gradle/VersionGradleFileSpec.kt | Adds tests for extra.set(...) parsing in version file logic. |
| buildSrc/src/test/kotlin/io/spine/gradle/report/pom/DependencyWriterSpec.kt | Extends tests to validate “resolved version” reporting behavior. |
| buildSrc/src/test/kotlin/io/spine/gradle/fs/SpineTempDirSpec.kt | Adds tests for new temp-dir utilities. |
| buildSrc/src/test/kotlin/io/spine/gradle/fs/LazyTempPathSpec.kt | Adds tests for new lazy temp path behavior. |
| buildSrc/src/main/resources/dokka/styles/custom-styles.css | Copyright header year update. |
| buildSrc/src/main/kotlin/write-manifest.gradle.kts | Refactors task registration style and doc wording. |
| buildSrc/src/main/kotlin/uber-jar-module.gradle.kts | Fixes typo (“fat JAR”) + simplifies task wiring. |
| buildSrc/src/main/kotlin/test-module.gradle.kts | Copyright header year update. |
| buildSrc/src/main/kotlin/Strings.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/pmd-settings.gradle.kts | Copyright header year update. |
| buildSrc/src/main/kotlin/module-testing.gradle.kts | Doc wording tweak. |
| buildSrc/src/main/kotlin/kmp-publish.gradle.kts | Copyright header year update. |
| buildSrc/src/main/kotlin/kmp-module.gradle.kts | Excludes Dokka configurations from version forcing + aligns KMP test execution setup. |
| buildSrc/src/main/kotlin/jvm-module.gradle.kts | Excludes Dokka configurations from version forcing + refactors task registration. |
| buildSrc/src/main/kotlin/jacoco-kotlin-jvm.gradle.kts | Removes deprecated JaCoCo script plugin. |
| buildSrc/src/main/kotlin/jacoco-kmm-jvm.gradle.kts | Removes deprecated JaCoCo script plugin. |
| buildSrc/src/main/kotlin/io/spine/gradle/VersionGradleFile.kt | Adds parsing support for extra.set(...) alongside legacy by extra(...). |
| buildSrc/src/main/kotlin/io/spine/gradle/testing/TestKitCoverage.kt | Uses centralized JaCoCo agent coordinate constant. |
| buildSrc/src/main/kotlin/io/spine/gradle/testing/Multiproject.kt | Doc wording fix (“dependent”). |
| buildSrc/src/main/kotlin/io/spine/gradle/testing/Logging.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/TaskName.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/StringExtensions.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/RunGradle.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/RunBuild.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/SpineLicense.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/ProjectMetadata.kt | Reworks metadata retrieval without property delegates. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/PomXmlWriter.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/PomFormatting.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/ModuleDependency.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/MarkupExtensions.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/InceptionYear.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/DependencyScope.kt | Doc punctuation/grammar tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/Template.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/Tasks.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/ProjectDependencies.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/MarkdownReportRenderer.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/LicenseReporter.kt | Ensures version is an input + opts out of build cache with rationale. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/Configuration.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/SiblingCoverage.kt | Makes coverage-consumer predicate reusable outside file. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/KoverConfig.kt | Improves aggregation wiring + credits compiler fork exec data in root report. |
| buildSrc/src/main/kotlin/io/spine/gradle/repo/RepoSlug.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/repo/Credentials.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/StandardJavaPublicationHandler.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/SpinePublishing.kt | Doc wording/grammar tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/PublishingRepos.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/PublishingExts.kt | Doc wording/grammar tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/PublicationHandler.kt | Doc punctuation tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/ProtoExts.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/CloudRepo.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/CloudArtifactRegistry.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/ProjectExtensions.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/kotlin/KotlinConfig.kt | Refactors opt-in list and scopes JVM-only opt-in correctly. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/task/Publish.kt | Fixes “NPM” typo in docs. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/task/IntegrationTest.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/Protobuf.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/McJs.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/JsPlugins.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/Idea.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsExtension.kt | Doc wording/grammar tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsEnvironment.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsContext.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/javadoc/JavadocTag.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/javadoc/JavadocConfig.kt | Doc formatting/grammar tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/javadoc/ExcludeInternalDoclet.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/javadoc/Encoding.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/javac/Javac.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/javac/ErrorProne.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/java/Tasks.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/github/pages/UpdateGitHubPagesExtension.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/github/pages/UpdateGitHubPages.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/github/pages/Update.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/github/pages/AuthorEmail.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/git/UserInfo.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/git/Repository.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/git/Branch.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/fs/SpineTempDir.kt | Introduces per-JVM temp directory namespace + shutdown cleanup. |
| buildSrc/src/main/kotlin/io/spine/gradle/fs/LazyTempPath.kt | Places temp dirs under shared per-JVM base directory. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/task/Publish.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/task/IntegrationTest.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/task/DartTasks.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/task/Build.kt | Doc wording/typo fixes (“compatibility”). |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/plugin/Protobuf.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/plugin/DartPlugins.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/DartExtension.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/DartEnvironment.kt | Doc spacing/grammar tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/DartContext.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/ConfigTester.kt | Doc wording/punctuation tweaks. |
| buildSrc/src/main/kotlin/io/spine/gradle/Clean.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/checkstyle/CheckStyleConfig.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/Build.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/gradle/base/Tasks.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/docs/MarkdownDocument.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/TestKitTruth.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Testcontainers.kt | Adds missing module coordinate (gcloud) + clarifies versioning docs. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/SystemLambda.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/OpenTest4J.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Kover.kt | Updates Kover version. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Kotest.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Jacoco.kt | Adds Jacoco.agent coordinate constant. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Hamcrest.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/AssertK.kt | Doc punctuation tweak. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Validation.kt | Updates Validation library pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt | Updates ToolBase pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Time.kt | Updates Time library pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/TestLib.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Spine.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Reflect.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/ProtoTap.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Logging.kt | Updates Logging library pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvmCompiler.kt | Updates CoreJvmCompiler pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvm.kt | Updates CoreJvm pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Compiler.kt | Updates compiler fallback pins + doc wording. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Change.kt | Updates Change library pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/BaseTypes.kt | Updates BaseTypes library pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt | Updates Base library pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Slf4J.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Roaster.kt | Removes outdated Java 11 note from docs. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Protobuf.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/KotlinX.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Klaxon.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaX.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaPoet.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaJwt.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Jackson.kt | Updates Jackson BOM version. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Coroutines.kt | Fixes doc typo (“project”). |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/BouncyCastle.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Asm.kt | Doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/AppEngine.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/ApacheHttp.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/kotlinx/Serialization.kt | Doc spacing tweak. |
| buildSrc/src/main/kotlin/io/spine/dependency/kotlinx/KotlinX.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/io/spine/dependency/Dependency.kt | Adds Configuration.isDokka helper to avoid forcing Dokka classpath versions. |
| buildSrc/src/main/kotlin/io/spine/dependency/build/ErrorProne.kt | Pins Error Prone to last Java 17-compatible version (per comments). |
| buildSrc/src/main/kotlin/io/spine/dependency/boms/BomsPlugin.kt | Excludes Dokka configurations from forcing; doc wording tweak. |
| buildSrc/src/main/kotlin/io/spine/dependency/boms/Boms.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/DokkaExts.kt | Doc wording tweaks. |
| buildSrc/src/main/kotlin/dokka-setup.gradle.kts | Disables Dokka Javadoc publication for KMP modules. |
| buildSrc/src/main/kotlin/DocumentationSettings.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/detekt-code-analysis.gradle.kts | Doc wording tweaks. |
| buildSrc/src/main/kotlin/DependencyResolution.kt | Excludes Dokka configurations from version forcing; doc wording tweak. |
| buildSrc/src/main/kotlin/config-tester.gradle.kts | Doc wording tweak. |
| buildSrc/src/main/kotlin/BuildSettings.kt | Copyright header year update. |
| buildSrc/src/main/kotlin/BuildExtensions.kt | Doc wording tweaks + adds excludeJetBrainsAnnotations() helper. |
| buildSrc/settings.gradle.kts | Copyright header year update. |
| buildSrc/quality/checkstyle.xml | Copyright header year update. |
| buildSrc/quality/checkstyle-suppressions.xml | Copyright header year update. |
| buildSrc/build.gradle.kts | Updates Kover version + doc wording tweaks. |
| .idea/misc.xml | Removes IDE-local file from repository. |
| .idea/live-templates/README.md | Minor spacing/grammar tweak. |
| .gitignore | Keeps .idea/misc.xml ignored + adds local Claude/plan scratch ignores. |
| .github/workflows/build-on-ubuntu.yml | Updates Codecov action major version. |
| .claude/settings.json | Adds plans directory + permission entries. |
| .agents/tasks/de-event-sourcing-rollout.md | Adds internal rollout/task notes for this migration. |
Files not reviewed (1)
- .idea/misc.xml: Generated file
|
@alexander-yevsyukov I can see you've added me to "assignees". Is this what you wanted to do, or did you mean to request a review from me? |
Migrates
jdbc-storageto the de-event-sourcing storage SPI of CoreJvm2.0.0-SNAPSHOT.522— Phase H of the rollout plan tracked incore-jvm.What changed
Mechanical adoption (earlier commits):
createRecordStoragemoved to the three-argument form with@Nullable StorageGroup.RecordStorageDelegateTest→DelegatingRecordStorageTest; the suites extending the removedAggregateStorageTest/AggregateHistoryTruncationTestare deleted.QueryPredicatesswitches modernized; a redundant cast removed.StorageGroupsupport (the substantive change):sourceTypealone, which under the new CoreJvm would conflate every entity's event journal with each other and with the event log (sourceType == Eventfor all of them), and an entity's state history with its latest-state table — handing the second storage a cached spec with the wrong ID column type.<group>_<RecordType>, e.g.spine_test_storage_StgProject_Event(event journal) andspine_test_storage_StgProject_EntityRecord(state history), beside the unchangedspine_test_storage_StgProject(latest state).TableSpecscaches specifications in aConcurrentHashMap: CoreJvm may create the state history storage lazily on delivery worker threads, concurrently with other storage creation.io.spine.server.storage.jdbc.aggregatepackage is removed — its Javadoc linked the deletedAggregateStorage, breaking Dokka.Custom table settings (follow-ups from the review):
docs/tables.mddocuments (setTableName(TaskView.class, …));recordType()isEntityRecordfor entity specs, so the previous lookup could never match. The mismatch predates this branch (sourceTypehas carried the state class since CoreJvm.380), but the branch touches the lookups, so it is fixed here.setTableName(stateType, recordType, name)overload names the grouped tables — e.g.setTableName(Project.class, Event.class, "project_journal")for the journal, and withEntityRecord.classfor the state history. The single-type form keeps addressing ungrouped storages only: its key cannot address a grouped table without collisions. A custom column mapping, being source-type-keyed, serves the grouped tables of its entity as well.@Nullable, matching the CoreJvm seam.Proofreading (last commit):
docs/**— fixing restrictivewhich→that, missing articles, verb complementation, genuine typos (RDMBS,modifiersformodifies),-lyhyphenation, and comma mechanics, plus a few grammar repairs beyond the catalog (a garbled sentence inDataSourceConfig, wrong prepositions inDeleteOne/OperationFactory). Config-distributed files (buildSrc/**etc.) are untouched, as upstream-owned.Testing
New Kotlin specs over H2 (CoreJvm publishes no fixture for the history storages yet):
GroupedTableAllocationSpec— the vendor allocation contract: distinct tables per storage kind and per entity type, cache convergence, the ID-column regression case, custom-name and custom-mapping scoping including the grouped-name overload.JdbcEntityEventStorageSpec/JdbcEntityStateHistoryStorageSpec— round-trips:historyBackwardordering and windows,EntityStateKey(a Protobuf message) as the record identifier, same-key overwrite,stateAt,trim,truncate.ConcurrentHistoryCreationSpec— concurrent storage creation converging on one physical table../gradlew build dokkaGenerateis green: 321 tests, 0 failures (18 skipped are the conditional MySQL/Postgres container suites). Version bumped2.0.0-SNAPSHOT.104→.110.Notes for reviewers
<group>_<RecordType>) was settled with the product owner on 2026-08-04;docs/tables.mddocuments it, including the identifier-length caveat.spine-code-review,kotlin-engineer,review-docs) approve; their should-fix notes (nullability-annotation split, prose polish) are resolved by the follow-up commits.buildSrc/configchurn in the branch is the config-distributed update that carried the CoreJvm.522pin; per repo convention it is reviewed in theconfigrepo, not here.🤖 Generated with Claude Code