_job_start_time records the populating host's local time, with no zone
I maintainer di solito rispondono entro 1 giorno
@dimitri-yatsenko ci sta già lavorando.
Dal 12/10/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
populate() stores _job_start_time as naive local time on whichever host runs it: start_time = time.time() (autopopulate.py:665), then written as datetime.datetime.fromtimestamp(start_time) (autopopulate.py:742). Two hosts in different time zones write different values for the same instant, and nothing in the row records which zone applies. A populate() run from a laptop in US Central and one from a worker in UTC leave start times five hours apart for computations that ran at the same moment.
The other timestamps the framework writes use a known clock:
_prov.timeis UTC:datetime.datetime.now(datetime.timezone.utc).isoformat()(provenance.py:103).- The job table's
completed_timeis the server'sCURRENT_TIMESTAMP(jobs.py:499,529).
A reader cannot place _job_start_time on either of those scales unless every host that populates the schema runs in the same zone.
Proposal
- Take
_job_start_timefrom the server's clock, as the job table already does forcompleted_time(jobs.py:498-499) andscheduled_time(jobs.py:388). Compute it in theUPDATEthat already writes the hidden columns (autopopulate.py:874), as the server's current time minus_job_duration. That adds no round trip, and every host that populates the schema then writes on one clock, whatever zone the host runs in. - The server expression must be statement time, not transaction time:
NOW(3)on MySQL, andstatement_timestamp()on PostgreSQL, whereCURRENT_TIMESTAMPis the start of the transaction. It belongs in the adapter, besidecurrent_user_expr(). - Keep measuring
_job_durationon the worker. It is a difference of two readings on one clock, so neither zone nor skew affects it. TheUPDATEruns after the commit that_job_durationalready includes, so the derived start is late by the one-way latency of that statement, which is the same error a separateSELECTat start would carry. - State in
job-metadata.md(datajoint-docs) that_job_start_timeuses the server's clock from the release that ships the change, and that rows written earlier carry the populating host's local time. Those rows cannot be corrected after the fact, because the zone was never recorded.
- Lingua principale
- Python
- Stelle
- 197
- Fork
- 99
- Merge medio
- 1g 11h
- PR unite (30g)
- 10
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun 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 datajoint/datajoint-python
-
MySQL error 1143 (column-level SELECT denied) is not translated to AccessErrorForse già presa @Bhanu73120 l’ha presa 1 giorno fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
datajoint/datajoint-python#1586 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
datajoint/datajoint-python#1581 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
datajoint/datajoint-python#1539 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Environment variables lose to datajoint.json for settings missing from ENV_VAR_MAPPINGForse già presa @dimitri-yatsenko l’ha presa 1 giorno fa. Aperta
datajoint/datajoint-python#1585 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
database.name should namespace schema names on MySQL, as it does on PostgreSQLForse già presa @dimitri-yatsenko l’ha presa 5 giorni fa. Apertafeature
Difficoltà 4/5 3-5 giorni Idoneità per principianti 15/100
datajoint/datajoint-python#1582 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di datajoint/datajoint-python
Issue simili
-
fix formatting of the sample database page of the docsForse già presa @Aaqibhafeezkhan l’ha presa oggi. Apertadocumentation good first issue help wanted
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
chaoss/CollectOSS#544 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area/plugin good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
kestra-io/plugin-soda#137 ·
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
ibm-granite/granite.build#504 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno