OfflineEmissionsTracker silently returns a half-built object when construction fails
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
Inizia in codecarbon/emissions_tracker.py, in OfflineEmissionsTracker.init, intorno alla riga 1312, quindi confrontalo con EmissionsTracker ed esamina BaseEmissionsTracker._set_from_conf intorno alle righe 138-140. Riproduci il caso di output_dir non valido e verifica che la costruzione sollevi un’eccezione, mentre la soppressione deliberata a runtime in start e stop rimane invariata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When OfflineEmissionsTracker is constructed with an invalid configuration, no exception is raised. The constructor returns a partially initialised object, every subsequent call fails silently, and the run produces no emissions data at all. The online EmissionsTracker raises correctly for the same input, so the two constructors have opposite error semantics.
Reproduction
from codecarbon import OfflineEmissionsTracker
tracker = OfflineEmissionsTracker(country_iso_code="FRA", output_dir="/does/not/exist")
tracker.start()
# ... user workload ...
print(tracker.stop()) # None, and emissions.csv was never written
EmissionsTracker(output_dir="/does/not/exist") raises OSError: Folder ... does not exist ! as expected.
Root cause
OfflineEmissionsTracker.__init__ is decorated with @suppress(Exception) at codecarbon/emissions_tracker.py:1312. The validation in BaseEmissionsTracker._set_from_conf (codecarbon/emissions_tracker.py:138-140) raises OSError, but the decorator swallows it, so super().__init__ never reaches _initialize_runtime_state() / _initialize_scheduler_state() (codecarbon/emissions_tracker.py:603-604). The object then has no _start_time, _hardware, _scheduler or _output_handlers.
start() and stop() are also @suppress(Exception) (lines 692 and 886), so the resulting AttributeError: OfflineEmissionsTracker object has no attribute _start_time is downgraded to warnings as well. Under the CLI default log_level="error" (codecarbon/cli/main.py) nothing is printed at all.
suppress itself lives at codecarbon/core/util.py:21-30.
Expected vs actual
- Expected: a misconfigured offline tracker raises at construction time, like the online tracker does.
- Actual: construction succeeds,
start()/stop()no-op with warnings,stop()returnsNone, and no emissions file is produced. Users reasonably conclude CodeCarbon does not work on their machine.
Suppressing exceptions in start/flush/stop is deliberate and should stay: CodeCarbon must never crash a training job at runtime. The decorator on the constructor is a different case, since failure there means the object invariants were never established.
- Lingua principale
- Python
- Stelle
- 1.9k
- Fork
- 351
- Merge medio
- 3g 12h
- PR unite (30g)
- 22
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di mlco2/codecarbon
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
mlco2/codecarbon#1460 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
CLI: get_config() returns None without [codecarbon] section; get_api_endpoint() appends api_endpoint under wrong sectionForse già presa @sohammishra864-wq l’ha presa 38 giorni fa. Aperta
Difficoltà 2/5 Mezza giornata Idoneità per principianti 82/100
mlco2/codecarbon#1432 ·
I maintainer di solito rispondono entro 1 giorno
-
Update the screen shot of the dashboardForse già presa @KLGani l’ha presa 13 giorni fa. Apertadocumentation good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
mlco2/codecarbon#1423 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
mlco2/codecarbon#1429 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
mlco2/codecarbon#1428 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di mlco2/codecarbon
Issue simili
-
Remove the `pull_request_target` workflow before GitHub blocks itForse già presa @jat255 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
IBM/mcp-context-forge#7483 ·
I maintainer di solito rispondono entro 2 giorni
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
[Bug Report]: OpenAI 辅助 API 连通性测试因输出上限仅 1 token 误报“未知错误”Forse già presa @fjfanjian l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Project-N-E-K-O/N.E.K.O#3640 ·
I maintainer di solito rispondono entro 1 giorno
-
author-page correction
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
acl-org/acl-anthology#10808 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno