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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions