Skip to content
This repository was archived by the owner on Feb 22, 2026. It is now read-only.

fix: unified exceptions and reactive pattern hardening#13

Merged
casc84ab merged 5 commits into
developfrom
fix/framework-hardening
Feb 13, 2026
Merged

fix: unified exceptions and reactive pattern hardening#13
casc84ab merged 5 commits into
developfrom
fix/framework-hardening

Conversation

@ancongui
Copy link
Copy Markdown
Contributor

Summary

  • Add fireflyframework-kernel dependency for unified exceptions
  • Fix fire-and-forget reactive patterns with error handlers
  • Standardize error handling across transactional flows

Test plan

  • All existing tests pass
  • New tests added for new functionality
  • Manual verification of key flows

…import removal

Part of the Firefly Framework hexagonal architecture remediation.

- Remove @import from EnableTransactionalEngine (redundant with .imports)
- Add TransactionalEngineConfiguration to .imports file
- EnableTransactionalEngine is now a marker-only annotation
@enable* annotations are designed to use @import — this is the correct
Spring pattern (cf. @EnableScheduling, @EnableCaching, etc.). The
anti-pattern we fixed was @import on @autoConfiguration classes.

Restore @import(TransactionalEngineConfiguration.class) so the
annotation works in both Spring Boot (auto-configuration) and plain
Spring contexts (e.g. AnnotationConfigApplicationContext in tests).
Conditional configs (persistence, Redis) remain in the .imports file.
TransactionalEngineConfiguration had a default InMemoryTccPersistenceProvider
for TCC but no equivalent for Saga. When SagaPersistenceAutoConfiguration
is not loaded (e.g. in plain Spring contexts via @EnableTransactionalEngine),
SagaEngine creation fails due to missing SagaPersistenceProvider.

Add a @ConditionalOnMissingBean default so the core configuration is
self-contained, matching the existing TCC pattern.
…rationTest

This test requires SagaPersistenceAutoConfiguration and
SagaRedisAutoConfiguration for the SagaRecoveryService bean.
Add explicit @import to match the pattern already used in
SagaRecoveryIntegrationTest. Tests that need specific conditional
configs should declare them explicitly rather than relying on
@EnableTransactionalEngine to load everything transitively.
- Add fireflyframework-kernel dependency for unified exceptions
- Fix fire-and-forget reactive patterns with error handlers
- Standardize error handling across transactional flows
@ancongui ancongui requested a review from casc84ab February 13, 2026 00:34
Copy link
Copy Markdown
Contributor

@casc84ab casc84ab left a comment

Choose a reason for hiding this comment

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

LGTM - Kernel dependency + reactive pattern hardening with proper error handlers on fire-and-forget chains.

@casc84ab casc84ab merged commit 9d7e2c9 into develop Feb 13, 2026
4 checks passed
@casc84ab casc84ab deleted the fix/framework-hardening branch February 13, 2026 09:28
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants