Skip to content

EVSE-Auslesen: Retry-Lücke und fehlende Synchronisierung beheben - #3895

Open
seaspotter wants to merge 1 commit into
openWB:masterfrom
seaspotter:fix-evse-hardware-check-retry
Open

seaspotter wants to merge 1 commit into
openWB:masterfrom
seaspotter:fix-evse-hardware-check-retry

Conversation

@seaspotter

Copy link
Copy Markdown
Collaborator

Zusammenfassung

  • Retry-Schleife beim EVSE-Auslesen in hardware_check.py erfasst jetzt beliebige Exceptions statt nur ModbusIOException/ConnectionException — schließt die Lücke, durch die ein einzelner RS485-/CRC-Glitch oder ein kurzzeitiger FAILURE-Status der EVSE sämtliche Wiederholungsversuche übersprungen und sofort "Erneutes Auslesen der EVSE" ausgelöst hat.
  • threading.RLock in modbus.py ergänzt, der alle Connect-/Lese-/Schreib-/Close-Operationen auf einem gemeinsam genutzten Modbus-Client serialisiert, da der Haupt-Poll-Loop und die Phasenumschaltungs-/CP-Unterbrechungs-Threads sonst unsynchronisiert gleichzeitig auf dieselbe Verbindung zugreifen können.

Testplan

  • Neue parametrisierte Regressionstests in hardware_check_test.py, die beide zuvor übersprungenen Fehlerpfade jetzt nachweislich per Retry abfangen
  • Neuer Nebenläufigkeits-Test in modbus_test.py, der beweist, dass Zugriffe serialisiert werden und dabei kein Aufruf verloren geht (ohne Lock schlägt der Test fehl, mit Lock besteht er)
  • Vollständige relevante Testsuite grün, keine Regressionen

Copilot AI 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.

🟡 Changes recommended

Raw delegate accesses remain outside the lock, so connection-wide synchronization is incomplete.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

This pull request improves EVSE retry handling and synchronizes shared Modbus operations.

Changes:

  • Retries arbitrary EVSE read exceptions.
  • Adds RLock protection for Modbus operations.
  • Adds retry and concurrency regression tests.
File summaries
File Summary
packages/modules/common/modbus.py Adds Modbus access synchronization.
packages/modules/common/modbus_test.py Tests concurrent access serialization.
packages/modules/common/hardware_check.py Expands EVSE retry handling.
packages/modules/common/hardware_check_test.py Tests transient retry scenarios.
Review details
  • Files reviewed: 4/4 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +62 to +64
# Serialisiert alle Zugriffe auf die (ggf. von mehreren Threads geteilte) Verbindung, zB.
# Haupt-Poll-Thread und Phasenumschaltungs-/CP-Unterbrechungs-Thread bei internem Ladepunkt.
self._lock = threading.RLock()

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.

@seaspotter Möchtest Du Dir das ansehen oder soll ich einen Folge-PR erstellen?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Sollte damit passen oder? #3947

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.

3 participants