Repository navigation
fix(display): routine rotation log lines are DEBUG (30% fewer journal lines) - #693
Conversation
Each rotation logged the mode twice ("Switching to mode", then "Processing
mode"), and an empty mode added "display() returned False" and "No content
to display". The three repeats are now DEBUG; "Switching to mode" stays
INFO. With the installer's persistent journal each log line becomes several
scattered page writes; on ledpi the display's ~21 lines/min accounted for
about 500 KiB/min of card writes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 28 minutes. View limit detailsLimit details: You’ve used the included review currently available. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Up to standards ✅🟢 Issues
|
#703, #705, #706 and #693 merged after this branch was cut; their CHANGELOG entries now sit under 3.8.0. The summary and New modules list name them (sports consolidation stage 4's four modules, src/ipc, field_model), stage 4's section says to floor on 3.8.0, and src/common/README.md marks its four modules 3.8.0 instead of Unreleased. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore(deprecation): remove the 35 APIs deprecated for 3.8.0 The usage scan (docs/DEPRECATIONS_3.8.md, regenerated 2026-10-01 and committed here) finds no call or override of any of them in the 46 monorepo plugins or the 8 third-party plugins plugins.json lists; the only core callers were other deprecated methods removed alongside. - CacheManager: 13 methods, plus the private helpers only has_data_changed used (_has_*_changed, _is_market_open). - DisplayManager: 7 methods, plus WEATHER_COLORS and the private _draw_sun/_cloud/_rain/_snow/_storm helpers only the icon methods used. - FontManager: 14 methods, plus size_tokens, _save_overrides and _clear_plugin_font_cache. font_overrides and _load_overrides stay: resolve_font() still applies config/font_overrides.json. performance_stats stays: get_font() keeps it and tests read it. - PluginManager.get_enabled_plugins. test_deprecation.py pins only the two 3.9.0 markers now; the scanner tests run against a stand-in core instead of the real markers. The memory-tier tests read stats through log_memory_cache_stats() and the component, and the test of the removed _clear_plugin_font_cache goes. Docs drop the removed methods' reference entries; the Deprecated APIs table becomes "Removed in 3.8.0". CHANGELOG gains a Removed section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(deprecation): drop the test harness's copies of the removed icon methods VisualTestDisplayManager still drew weather icons that DisplayManager no longer has, so a plugin's visual tests could pass on calls that raise AttributeError on the real display. Its draw_sun/draw_cloud/draw_rain/ draw_snow/draw_weather_icon/draw_text_with_icons, WEATHER_COLORS and the private helpers go, with the tests that exercised them. The CHANGELOG's Deprecations entries no longer say nothing is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore: prepare the 3.8.0 release Bumps src.__version__ to 3.8.0 and turns Unreleased into ## 3.8.0, with a summary and a New modules list (vegas_elements, testing.vegas, sports_vegas; display_watchdog, plugin_catalog, plugin_runtime) for plugins flooring on 3.8.0. Adds the CHANGELOG line #701's second commit lacked (blocks laid out off the render thread). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore: 3.8.0 also ships what landed on main since the prep #703, #705, #706 and #693 merged after this branch was cut; their CHANGELOG entries now sit under 3.8.0. The summary and New modules list name them (sports consolidation stage 4's four modules, src/ipc, field_model), stage 4's section says to floor on 3.8.0, and src/common/README.md marks its four modules 3.8.0 instead of Unreleased. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
What
Every rotation logged each mode twice ("Switching to mode", then "Processing mode"). A mode with nothing to show added "display() returned False" and "No content to display", which say the same thing. Those three repeats are now DEBUG. "Switching to mode" stays INFO, and
--debugstill shows everything.Why: tracing SD-card writes on ledpi (Pi 4)
The cache-dedup PR (#675) made no difference to the card's write rate. So I traced where the writes on ledpi actually go.
/proc/diskstats./run(branchclaude/volatile-state-on-tmpfs) measured within noise. Dropped.Conclusion: the persistent journal costs about 9 KB of card writes per stored line. Silencing INFO entirely saves about 190 KiB/min (~13%). This change cuts the display's journal lines by about 30%, and its write saving (~50 KiB/min) is within noise.
It is a small, low-risk improvement, and the log reads better without the duplicates. It is not a big wear fix.
The rest of the display's roughly 300 KiB/min comes from something other than logs or runtime state. Attributing it needs root tracing (fatrace or blktrace). Most of ledpi's remaining writes are not from LEDMatrix at all: something SSHes into the rig every 30–40 s, and each login adds about 30 journal lines.
Tests
Display-controller tests pass (261), and no test depended on these messages.
🤖 Generated with Claude Code