codingjoe / codingjoe/threadmill

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

オープン 初心者向け
#53 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
12
フォーク
1
平均マージ
1日 1時間
マージ済み PR(30日)
10

説明

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.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python, redis
領域
backend, databases, testing-qa
issue の種類
バグ
難易度
2/5
見積もり時間
1〜3時間
活発さ
活発
明瞭さ
明確に書かれている
初心者へのやさしさ
82/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。