Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

WorkerProcess passes None poll intervals to the backend, breaking acquire in the consumer thread

Open Beginner friendly
#53 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
82/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
python, redis

Research direction

Start with tests/test_executor.py:_make_worker() and WorkerProcess.run(), then inspect RedisTaskBackend.acquire() where the poll intervals are used. Run the relevant executor tests and confirm that default polling no longer reaches acquire as None and that the consumer thread completes without an unhandled TypeError.

Written by the indexing model from the issue text.

Description

Found by testJoe while adding coverage for the fair multi-queue rotation (codingjoe-fair-multi-queue-scheduling), and confirmed pre-existing (untouched by that diff):

defer: WorkerProcess.run() lets None poll overrides reach RedisTaskBackend.acquire, raising TypeError in the consumer thread. Pre-existing, untouched L297. [tests/test_executor.py]

QED

  1. tests/test_executor.py:_make_worker() defaults poll_interval and poll_max_interval to None and passes them into WorkerProcess.
  2. WorkerProcess.run() assigns them to the backend (backend.poll_interval = self.poll_interval), so the backend's poll options become None.
  3. RedisTaskBackend.acquire() computes int(self.poll_max_interval / self.poll_interval), which raises TypeError: unsupported operand type(s) inside the consumer thread.

The suite only reports PytestUnhandledThreadExceptionWarning, so the failure is invisible today. Either treat None as "keep the backend default" in WorkerProcess, or make the test helper pass the real defaults.

Dominant language
Python
Stars
12
Forks
1
Avg merge
19h 11m
Merged PRs (30d)
12

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from codingjoe/threadmill

All issues in codingjoe/threadmill

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.