Skip to content

Restore nightly Axon(iq)Framework compatibility: describe AxoniqPlatformStateManager - #170

Merged
smcvb merged 2 commits into
mainfrom
fix/nightly-af-compat
Aug 5, 2026
Merged

Restore nightly Axon(iq)Framework compatibility: describe AxoniqPlatformStateManager#170
smcvb merged 2 commits into
mainfrom
fix/nightly-af-compat

Conversation

@CodeDrivenMitch

Copy link
Copy Markdown
Collaborator

What broke

The nightly compatibility build failed against the rolling io.axoniq.framework snapshot:

AxoniqPlatformStateManager.kt:25:1 Class 'AxoniqPlatformStateManager' is not abstract
and does not implement abstract member:
    fun describeTo(descriptor: ComponentDescriptor): Unit

org.axonframework.modelling.StateManager now extends DescribableComponent, so our decorator no longer compiles without a describeTo implementation.

The change landed upstream after #169: the 2026-08-03T09:37 nightly was green, and the snapshot jar that breaks is timestamped 2026-08-03 14:31.

Only the nightly is affected — main.yml builds against the pinned 5.3.0-RC1, which does not yet have this change.

The fix

Implement describeTo as descriptor.describeWrapperOf(delegate), consistent with the other decorators in this module (AxoniqPlatformRepository, InspectionEntityMetamodel, the command/query bus wrappers).

DescribableComponent is declared explicitly on the class rather than inherited through StateManager. This matters: in the pinned 5.3.0-RC1 the interface is not a supertype of StateManager, so a bare override would fail to compile there. Declaring it directly makes describeTo a legitimate override under both versions, so the pinned build and the nightly agree. The interface itself exists in both, so nothing is version-gated.

This mirrors the reasoning already applied in InspectionEntityMetamodel, and the extra supertype is what upstream requires anyway — it becomes redundant, not wrong, once the snapshot is adopted.

Verification

./mvnw -B -U clean verify run locally against both versions:

Framework version Compile Tests
5.3.0-RC1 (pinned) pass 124 run
5.3.0-SNAPSHOT (nightly) pass 124 run

Both configurations show the same 4 pre-existing AxoniqConsoleRSocketClientToxiproxyIntegrationTest awaitility timeouts. These are identical on the pinned RC1 — the exact configuration that passed CI in #169 — so they are local Docker/networking flakiness, not related to this change and not version-dependent. CI should be green.

…ormStateManager

The nightly compatibility build against the rolling io.axoniq.framework
snapshot broke: `StateManager` now extends `DescribableComponent`, so the
`AxoniqPlatformStateManager` decorator no longer compiles without a
`describeTo` implementation.

Implement it as `descriptor.describeWrapperOf(delegate)`, matching how the
other decorators in this module describe themselves.

`DescribableComponent` is declared explicitly on the class rather than
relied on through `StateManager`, because the pinned 5.3.0-RC1 does not yet
extend it. Declaring it directly keeps `describeTo` a valid `override`
against both, so this compiles against the pinned release and the snapshot.

Verified `clean verify` against both 5.3.0-RC1 and 5.3.0-SNAPSHOT.
@sonarqubecloud

sonarqubecloud Bot commented Aug 4, 2026

Copy link
Copy Markdown

@CodeDrivenMitch
CodeDrivenMitch requested a review from smcvb August 4, 2026 10:53

@smcvb smcvb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me 👍

@smcvb
smcvb merged commit 4695028 into main Aug 5, 2026
3 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