Skip to content

Timeout for pending jobs raises InvalidStateError #67

@Zeniuus

Description

@Zeniuus

Environment:

  • macOS HighSierra 10.13.6
  • Python v3.6.6 with pyenv
  • aiojobs v0.2.2

How to reproduce:

import asyncio

import aiojobs


async def some_unexpectedly_long_async_job():
    await asyncio.sleep(10000)


async def reproduce_bug():
    scheduler = await aiojobs.create_scheduler(limit=1)

    jobs = await asyncio.gather(*[scheduler.spawn(some_unexpectedly_long_async_job())
                                  for _ in range(2)])
    try:
        waited_jobs = await asyncio.gather(*[job.wait(timeout=3) for job in jobs])
    except:
        # Deal with async jobs timeout
        pass

    await scheduler.close()

loop = asyncio.get_event_loop()
loop.run_until_complete(reproduce_bug())

bug:

Exception in callback Job._done_callback(<Task cancell...at test.py:6>>)
handle: <Handle Job._done_callback(<Task cancell...at test.py:6>>)>
Traceback (most recent call last):
  File "/Users/zeniuus/.pyenv/versions/3.6.6/lib/python3.6/asyncio/events.py", line 145, in _run
    self._callback(*self._args)
  File "/Users/zeniuus/.pyenv/versions/aiojobs-bug-test/lib/python3.6/site-packages/aiojobs/_job.py", line 138, in _done_callback
    scheduler._done(self)
  File "/Users/zeniuus/.pyenv/versions/aiojobs-bug-test/lib/python3.6/site-packages/aiojobs/_scheduler.py", line 141, in _done
    new_job._start()
  File "/Users/zeniuus/.pyenv/versions/aiojobs-bug-test/lib/python3.6/site-packages/aiojobs/_job.py", line 134, in _start
    self._started.set_result(None)
asyncio.base_futures.InvalidStateError: invalid state

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions