Skip to content

fix infinite looping when socket goes stale in gevent#1727

Closed
abhinavabcd wants to merge 1 commit intoslackapi:mainfrom
abhinavabcd:main
Closed

fix infinite looping when socket goes stale in gevent#1727
abhinavabcd wants to merge 1 commit intoslackapi:mainfrom
abhinavabcd:main

Conversation

@abhinavabcd
Copy link
Copy Markdown

@abhinavabcd abhinavabcd commented Aug 14, 2025

Summary

When Running in socket mode using gevent, after a while it just goes into infinite loop and becomes unresponsive.
image

Technically receive function can raise an exception on broken socket on certains errno,
instead of empty bytes indicating clean closure.

Testing

  • Run after gevent patching.
  • Disconnect network or let socket go inactive.
  • CHeck the process stat, pyspy stuck in 100% cpu.

Category

  • slack_sdk.web.WebClient (sync/async) (Web API client)

  • slack_sdk.webhook.WebhookClient (sync/async) (Incoming Webhook, response_url sender)

  • slack_sdk.socket_mode (Socket Mode client)

  • slack_sdk.signature (Request Signature Verifier)

  • slack_sdk.oauth (OAuth Flow Utilities)

  • slack_sdk.models (UI component builders)

  • slack_sdk.scim (SCIM API client)

  • slack_sdk.audit_logs (Audit Logs API client)

  • slack_sdk.rtm_v2 (RTM client)

  • /docs (Documents)

  • /tutorial (PythOnBoardingBot tutorial)

  • tests/integration_tests (Automated tests for this library)

  • I've read and understood the Contributing Guidelines and have done my best effort to follow them.

  • I've read and agree to the Code of Conduct.

  • I've run python3 -m venv .venv && source .venv/bin/activate && ./scripts/run_validation.sh after making the changes.

@salesforce-cla
Copy link
Copy Markdown

Thanks for the contribution! Before we can merge this, we need @abhinavabcd to sign the Salesforce Inc. Contributor License Agreement.

@WilliamBergamin
Copy link
Copy Markdown
Contributor

WilliamBergamin commented Aug 14, 2025

I'm reluctant to approve these changes since this is a critical section of our project 🤔

Is there any clear documentation on which errno should raise an exception and which should return empty bytes?

@mwbrooks mwbrooks added bug M-T: A confirmed bug report. Issues are confirmed when the reproduction steps are documented semver:patch labels Aug 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug M-T: A confirmed bug report. Issues are confirmed when the reproduction steps are documented cla:signed semver:patch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants