Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: allow disabling the unresponsive controller recovery feature, don't recover while initializing, move enableSoftReset to features #6480

Merged
merged 3 commits into from
Oct 31, 2023

Conversation

AlCalzone
Copy link
Member

@AlCalzone AlCalzone commented Oct 31, 2023

While a lot of improvements have gone into the feature to make it less disruptive, there may be scenarios where turning it off may be desired. To achieve this, this PR makes the following changes:

  • Adds a driver option features.unresponsiveControllerRecovery that can be set to false to disable the unresponsive controller recovery feature altogether.
  • Adds an env variable ZWAVEJS_DISABLE_UNRESPONSIVE_CONTROLLER_RECOVERY that disables the unresponsive controller recovery when set to a non-empty string
  • Adds a driver preset NO_CONTROLLER_RECOVERY that does the same

Essentially disabling this feature will restore the pre-12.x behavior of Z-Wave JS when the controller is unresponsive. When this happens, controller commands will simply fail and nodes may get randomly marked as dead until the controller recovers on its own. This is meant as a last resort.

In addition, the enableSoftReset is deprecated now in favor of features.softReset, in order to group related options together.

closes: #6402
fixes: #6330

@AlCalzone
Copy link
Member Author

@zwave-js-bot automerge

zwave-js-bot
zwave-js-bot previously approved these changes Oct 31, 2023
@zwave-js-bot zwave-js-bot enabled auto-merge (squash) October 31, 2023 10:48
@AlCalzone AlCalzone changed the title feat: allow disabling the unresponsive controller recovery feature, move enableSoftReset to features feat: allow disabling the unresponsive controller recovery feature, don't recover while initializing, move enableSoftReset to features Oct 31, 2023
zwave-js-bot
zwave-js-bot previously approved these changes Oct 31, 2023
@zwave-js-bot zwave-js-bot merged commit ba7473f into master Oct 31, 2023
17 checks passed
@zwave-js-bot zwave-js-bot deleted the disable-recovery branch October 31, 2023 11:15
AlCalzone added a commit that referenced this pull request Oct 31, 2023
### Features
* Allow disabling the unresponsive controller recovery feature (#6480)

### Bugfixes
* Do not abort timed out `Send Data` commands twice (#6484)
* Ensure the default Basic CC values are only exposed if they should be, even with the compat `event` enabled (#6485)
* Auto-remove failed SmartStart nodes when bootstrapping times out (#6483)
* Do not attempt to poll values from nodes that are considered dead (#6470)
* Fixed an issue where the send queue was blocked when recovering controller from missed Send Data callback failed (#6473)
* Instead of restarting the driver, the serial port is now reopened if controller is still missing ACKs after soft-reset (#6477)
* Do not attempt to recover an unresponsive controller before fully initializing (#6480)

### Config file changes
* Tweak Heatit Z-TRM6 options (#6464)
* Add Ring Alarm Panic Button Gen2 (#6453)
* Update fingerprints for Vesternet devices (#6460)

### Changes under the hood
* Added a `mock-server` hook to run code after initializing mocks (#6478)
* Changed the headline in the logs from "ZWAVE-JS" to "Z-WAVE JS" (#6462)
* Lint device config files as part of CI (#6471)
* The `enableSoftReset` driver option is now deprecated in favor of `features.softReset` (#6480)
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.

Unresponsive controller recovery: Improvements Don't try to recover unresponsive controller before booting
2 participants