Releases: ydb-platform/yoj-project
YOJ 2.6.44 (Update Netty to mitigate CVE-2025-55163)
TxManager and TxNameGenerator. These changes are unlikely to affect most API users, but are breaking nonetheless.
Compile Dependency Updates:
- Netty: 4.1.118.Final -> 4.1.128.Final
Reason: https://www.cve.org/CVERecord?id=CVE-2025-55163 (fixed in >= 4.1.124.Final)
YOJ 2.6.43 (Java 25 Readiness + Dependency Updates)
Compile Dependencies Updated:
- YDB Java SDK: 2.3.21 -> 2.3.22
- GRPC Java version: 1.59.1 -> 1.68.3
(same as in our and YDB Java SDK's ydb-proto-api dependency) - Google Common Protos: 2.9.0 -> 2.41.0
(same as in GRPC Java dependencies) - Prometheus Simpleclient: 0.6.0 -> 0.16.0
- Guava 33.0.0-jre -> 33.5.0-jre
Optional Compile Dependencies:
- Kotlin: 1.9.0 -> 2.2.21
Test Dependencies Updated:
- Mockito: 5.11.0 -> 5.20.0
- ByteBuddy: 1.14.11 -> 1.17.7 (same as in Mockito dependencies)
- AspectJ Weaver: 1.9.21 -> 1.9.24
- Kotlin Compile Testing (for testing Annotation Processor):
Switched to a fork (dev.zacsweers.kctfork:core) that supports Kotlin 2.2.x
Test Dependencies Removed:
- Hamcrest: Was unused, because we now use AssertJ everywhere
Build-Time Dependencies Updated:
- Lombok: 1.18.30 -> 1.18.42
- Maven Compiler Plugin: 3.11.0 -> 3.14.1
- Maven Enforcer Plugin: 3.3.0 -> 3.6.2
- Extra Maven Enforcer Plugin rules: 1.7.0 -> 1.11.0
- Maven JaCoCo plugin: 0.8.11 -> 0.8.14
YOJ 2.6.42 (TableQueryBuilder with explicit schema)
TxManager and TxNameGenerator. These changes are unlikely to affect most API users, but are breaking nonetheless.
API Changes
⚠️ Breaking: MakeTable.query()method non-default + ConstructTableQueryBuilderwith an explicitEntitySchema
This API change, despite being breaking, is unlikely to affect most API users, because most users don't overrideTabledirectly (most do that throughAbstractDelegatingTablewhich has been adapted to the change).
YOJ 2.6.41 (TxManager improvements)
TxManager and TxNameGenerator. These changes are unlikely to affect most API users, but are breaking nonetheless.
API Changes
⚠️ Breaking: RefactorTxManagerAPI⚠️ StdTxManager(Repository repository, int maxAttemptCount, String name, Integer logLine, String logContext, TxOptions options)constructor has been removed; useStdTxManager(Repository)constructor instead, and set extra settings viawithmethods onTxManager.- ❌ For legacy code compatibility only: If you have to set a custom tx
IsolationLevelon aTxManagerdirectly**, use the newStdTxManager.withTransactionIsolationLevel()method. Note that the method is introduced on the implementation (StdTxManageronly) and not on the generalTxManagerinterface.
- ❌ For legacy code compatibility only: If you have to set a custom tx
⚠️ Recently introducedTxNameGeneratorAPI has been incompatibly changed, and it is now explicitly annotated as experimental (@ExperimentalApi). Note that an experimental API might get incompatibly changed between YOJ versions again and again.
- #157: Deprecate reflection-heavy
EntityIdSchema.SORT_ENTITY_BY_IDconstant in favor of newEntitySchema.defaultOrder()method
Doc and Debugging Improvements
YOJ 2.6.40 (minor YdbSessionManager metric improvements)
Features
- Add "acquire duration histogram (in seconds)" metric for
YdbSessionManager
YOJ 2.6.39 (improved exception hierarchy, new session manager metrics)
API Changes
- Improved
RepositoryExceptionhierarchy (RepositoryExceptionis now asealedexception class)
New Features
- New
YdbSessionManagermetrics: session pool settings (min and max) as gauges, totals as counters; all grouped byYdbRepositoryname (seeYdbRepository.Settings.metrics()for more information).
YOJ 2.6.38 (gentler deprecation warnings for projections)
API Changes
- #77: Remove deprecation from user-visible parts of the Projections API (for now) +
- ❌ We remove
@Deprecatedannotation and deprecation warning logs from user-visible parts of the Projections API:t.y.y.r.d.{Entity.createProjections, EntityList},t.y.y.r.d.projection.*(except for@InternalApis). - ➕ We add concrete docs on which parts of the APIs will be moved to a different library and/or
package, and which internal Projection-related APIs will be removed entirely (or at least may be.)
- ❌ We remove
- Add
TxManagerState.isDryRun()method to check if transaction body is being executed in dry-run mode (all queries will be performed and result returned, but the database transaction will be rolled back). This method is mostly useful forTxManagerdecorators, seeDelegatingTxManagerfor a recommended way to create one.
Minor Fixes
- Improve log messages for dry-run mode transactions
rollback()of a dry-run transaction is not caused by any inconsistency, and is in fact entirely normal and indended. Now the logs reflect that.
YOJ 2.6.37 (bugfixes)
Bugfixes
- Unexpected NPE when trying to validate conversion result in
CustomValueTypes.preconvert()
The bug happened when a custom-value converter erroneously returnednullfromValueConverter.toColumn(), e.g. because of a badnull-returningtoString()implementation in a string-value type.
This should not happen inCustomValueTypes.postconvert()because thenull -> nulllogic is applied
before that, and a nullvalueshould not get intoCustomValueTypes.postconvert()at all.
Reverted Changes
YOJ 2.6.36 (mis-release)
The next release (2.6.37) rolls it back.
Backwards Compatibility