ethereum / alexandria

MIT License
6 stars 9 forks source link

CacheDB concurrency issue #2

Closed pipermerriam closed 4 years ago

pipermerriam commented 4 years ago
Traceback (most recent call last):
  File "/usr/local/bin/alexandria", line 11, in <module>
    load_entry_point('alexandria', 'console_scripts', 'alexandria')()
  File "/root/alexandria/alexandria/_boot.py", line 53, in _boot
    trio.run(manager.run)
  File "/usr/local/lib/python3.7/dist-packages/trio/_core/_run.py", line 1804, in run
    raise runner.main_task_outcome.error
  File "/usr/local/lib/python3.7/dist-packages/async_service/trio.py", line 208, in run
    for _, exc_value, exc_tb in self._errors
  File "/usr/local/lib/python3.7/dist-packages/async_service/base.py", line 301, in _run_and_manage_task
    await task.run()
  File "/usr/local/lib/python3.7/dist-packages/async_service/trio.py", line 76, in run
    await self._async_fn(*self._async_fn_args)
  File "/root/alexandria/alexandria/_boot.py", line 23, in run
    await main()
  File "/root/alexandria/alexandria/main.py", line 168, in main
    await manager.wait_finished()
  File "/usr/local/lib/python3.7/dist-packages/async_generator/_util.py", line 42, in __aexit__
    await self._agen.asend(None)
  File "/usr/local/lib/python3.7/dist-packages/async_service/trio.py", line 409, in background_trio_service
    await manager.stop()
  File "/usr/local/lib/python3.7/dist-packages/trio/_core/_run.py", line 730, in __aexit__
    raise combined_error_from_nursery
  File "/usr/local/lib/python3.7/dist-packages/async_service/trio.py", line 208, in run
    for _, exc_value, exc_tb in self._errors
  File "/usr/local/lib/python3.7/dist-packages/async_service/base.py", line 301, in _run_and_manage_task
    await task.run()
  File "/usr/local/lib/python3.7/dist-packages/async_service/base.py", line 166, in run
    await self.child_manager.run()
  File "/usr/local/lib/python3.7/dist-packages/async_service/trio.py", line 208, in run
    for _, exc_value, exc_tb in self._errors
  File "/usr/local/lib/python3.7/dist-packages/async_service/base.py", line 301, in _run_and_manage_task
    await task.run()
  File "/usr/local/lib/python3.7/dist-packages/async_service/base.py", line 166, in run
    await self.child_manager.run()
  File "/usr/local/lib/python3.7/dist-packages/async_service/trio.py", line 208, in run
    for _, exc_value, exc_tb in self._errors
  File "/usr/local/lib/python3.7/dist-packages/async_service/base.py", line 301, in _run_and_manage_task
    await task.run()
  File "/usr/local/lib/python3.7/dist-packages/async_service/trio.py", line 76, in run
    await self._async_fn(*self._async_fn_args)
  File "/root/alexandria/alexandria/kademlia.py", line 259, in _handle_content_ingestion
    bundle,
  File "/usr/local/lib/python3.7/dist-packages/trio/_threads.py", line 310, in to_thread_run_sync
    return await trio.hazmat.wait_task_rescheduled(abort)
  File "/usr/local/lib/python3.7/dist-packages/trio/_core/_traps.py", line 165, in wait_task_rescheduled
    return (await _async_yield(WaitTaskRescheduled(abort_func))).unwrap()
  File "/usr/local/lib/python3.7/dist-packages/outcome/_sync.py", line 111, in unwrap
    raise captured_error
  File "/usr/local/lib/python3.7/dist-packages/trio/_threads.py", line 262, in do_release_then_return_result
    return result.unwrap()
  File "/usr/local/lib/python3.7/dist-packages/outcome/_sync.py", line 111, in unwrap
    raise captured_error
  File "/root/alexandria/alexandria/content_manager.py", line 485, in ingest_content
    self._ingest_content_data(content.key, content.data)
  File "/root/alexandria/alexandria/content_manager.py", line 505, in _ingest_content_data
    self.cache_db.set(Content(key, data))
  File "/root/alexandria/alexandria/content_manager.py", line 259, in set
    previous_content = self._get_record(content.key)
  File "/root/alexandria/alexandria/content_manager.py", line 237, in _get_record
    for content in self._records:
RuntimeError: deque mutated during iteration

Probably because it's using threads for content ingestion...

pipermerriam commented 4 years ago

fixed