classification
Title: Log exception never retrieved in concurrent.futures
Type: enhancement Stage:
Components: Library (Lib) Versions: Python 3.10
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: bar.harel, bquinlan, pitrou
Priority: normal Keywords:

Created on 2020-07-22 22:39 by bar.harel, last changed 2020-07-22 22:42 by bar.harel.

Messages (1)
msg374114 - (view) Author: Bar Harel (bar.harel) * Date: 2020-07-22 22:39
Asyncio has an amazing mechanism showing "Task exception was never retrieved" or "Future exception was never retrieved" if the task threw an exception, and no one checked its `.result()` or `.exception()`.

It does so by setting a private variable named `__log_traceback` to False upon retrieval, and logging at `__del__` if the exception wasn't retrieved.

I believe it's a very important mechanism missing from concurrent.futures. It's very easy to implement.

I wanted to see if there's any disagreement before I implement it though. It's small enough to not need python-ideas yet important enough for inclusion I believe.

Regarding potential issues - I can only see issues with unlikely deadlocks at `__del__` (think of a handler taking a lock and this occurs during the handling of another log record). Asyncio however already took that bet, and although it's less planned for multi-threading, it's still a bet that was totally worth it.
History
Date User Action Args
2020-07-22 22:42:11bar.harelsetnosy: + bquinlan, pitrou
2020-07-22 22:39:11bar.harelcreate