Skip to content

Remove redundant startup reloads and quiet routine lifecycle logs - #14

Merged
remdui merged 11 commits into
mainfrom
fix/startup-preflight-log-noise
Sep 17, 2026
Merged

remdui merged 11 commits into
mainfrom
fix/startup-preflight-log-noise

Conversation

@remdui

@remdui remdui commented Sep 17, 2026

Copy link
Copy Markdown
Member

Summary

Reduce startup work and console noise for every FeatureFramework host, including both ServerFeatures and ProxyFeatures.

Root cause

Startup storage preflight created a temporary feature/context and called the full prepare(...) lifecycle. Managed preparation injects defaults and reloads config/localization. Actual feature activation then creates the real feature/context and runs the same preparation again.

That meant routine boot performed two config/localization reload phases per enabled feature and emitted duplicate Localization files reloaded... INFO messages.

Fix

  • add a dedicated prepareStorage(...) preflight boundary;
  • managed preflight now only materializes config/message defaults;
  • actual activation performs the one runtime config/localization reload;
  • startup localization reloads use a quiet DEBUG path;
  • explicit/operator-triggered localization reloads continue to log at INFO;
  • add DEBUG support to the shared framework logger with JUL/FINE and SLF4J/DEBUG mappings;
  • move routine feature-scoped DataProvider scope/connection lifecycle messages to DEBUG;
  • preserve backward compatibility for custom FeatureHostContext, FeatureLocalization, and FrameworkLogger implementations through default methods.

Architecture

This deliberately does not merge feature-scoped ORM contexts. Their lifecycle/entity isolation is intentional; startup detail should be quieter without weakening resource ownership boundaries.

The DataProvider ORM/entity/reference-count logging and explicit non-JTA Hibernate bootstrap are handled in the companion DataProvider PR.

Tests

Added regression coverage proving:

  • storage preflight injects config/message defaults without runtime config/localization reloads;
  • real runtime preparation reloads config and localization exactly once;
  • startup uses the quiet localization path while explicit reload remains a separate operator-facing API.

@remdui
remdui merged commit 5233819 into main Sep 17, 2026
5 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.

1 participant