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

Fix rainforest_raven closing device due to timeout #121905

Merged
merged 1 commit into from
Jul 15, 2024

Conversation

cottsay
Copy link
Contributor

@cottsay cottsay commented Jul 13, 2024

Proposed change

When there's a timeout initializing the device, it's possible that a problem with the serial port is blocking the write operations, meaning that the flush() that's part of the call to close() might block. The device is already in a bad state, so we should just use abort() to abandon the attempt so that we can try again. This will close the device without flushing the write buffer.

I'm still not able to reproduce the reported problems with rainforest_raven at startup, but at least one of the backtraces I saw indicated that the call to await device.close() wasn't completing and eventually timed out. Though this change doesn't address why the device timed out to begin with, I'm hoping it mitigates the effects and allows Home Assistant to continue startup and try to open the device again later.

The abort() method was introduced in aioraven 0.7.0, which this PR updates to:
Upstream diff: https://github.com/cottsay/aioraven/compare/0.6.0..0.7.0
Upstream changelog: https://github.com/cottsay/aioraven/blob/0.7.0/CHANGELOG.md#070-2024-07-12

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies - a link to the changelog, or at minimum a diff between library versions is added to the PR description.

To help with the load of incoming pull requests:

When there's a timeout initializing the device, it's possible that a
problem with the serial port is blocking the write operations, meaning
that the flush() that's part of the call to close() might block. The
device is already in a bad state, so we should just use abort() to
abandon the attempt so that we can try again. This will close the device
without flushing the write buffer.
@MartinHjelmare MartinHjelmare changed the title rainforest_raven: Skip flush when closing device due to timeout Fix rainforest_raven closing device due to timeout Jul 14, 2024
Copy link
Member

@frenck frenck left a comment

Choose a reason for hiding this comment

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

Thanks, @cottsay 👍

../Frenck

@frenck frenck added this to the 2024.7.3 milestone Jul 15, 2024
@frenck frenck merged commit df00e1a into home-assistant:dev Jul 15, 2024
35 of 36 checks passed
@github-actions github-actions bot locked and limited conversation to collaborators Jul 16, 2024
@cottsay cottsay deleted the aioraven-abort branch July 16, 2024 15:24
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants