KamoCRM

X continua a contare attraverso un sonno, così ogni computer ripreso è tornato dritto a dormire

FixKlusterServices
Shipped
24 settembre 2026 alle ore 08:48 UTC
Author
Kamo
Commit
c657eb1

Un membro che apre il loro computer ha una scheda nera. Il lancio era a posto, la veglia era a posto, il curriculum era bene — e poi la macchina si è alimentata prima che il browser potrebbe collegarsi ad esso. Dal cluster, alle 08:38 oggi: VirtualMachineInstance è iniziata. (08:35:33) computer hc-...-7dcfc3f4194a è stato inattivo 2564s (limite 30m) — chiedergli di dormire (08:38:13) Ho bloccato la macchina virtuale eliminando l'istanza della macchina virtuale [console] reboot: Power down Un computer che era stato su per 160 secondi ha riferito 42 minuti di idleness. Guacamole autenticata il membro e poi non ha mai aperto un tunnel, perché da allora non c'era nulla in ascolto su 3389 — guacd non ha effettuato un tentativo di connessione tutta la mattina. xprintidle risponde "per quanto tempo questa sessione X è stata toccata per l'ultima volta", e THE X SERVER KEEPS COUNTING ACROSS A SUSPEND-TO-DISK. Si ripristina con il timestamp di ingresso che aveva, quindi ogni ora la macchina spende alimentato è restituito come un'ora di inattività. Entrambi i consumatori hanno fatto esattamente ciò che sono costruito a che fare con quel numero: il proprio guardiano dell'agente si iberna al limite, e Idle spazza lo chiede. La veglia del membro è stata annullata ogni volta. Questo non è il bug del curriculum fissato in a607fea, è la metà che uno perso. Quel commit riavvia `last active` quando l'orologio da parete mostra un gap — e poll() quindi overwrote esso tre linee dopo da il contatore che è sbagliato, quindi il reset non è mai sopravvissuto a un singolo sondaggio. Un computer non può essere rimasto inattivo per più tempo di quanto sia stato sveglio. L'invariante è la fissazione, e contiene ciò che X crede: ` awake since` è impostato all'inizio e di nuovo su ogni curriculum rilevato, e ogni risposta che questa classe dà è bloccata ad esso. Il rilevamento del curriculum si sposta anche da tick() in note resume(), chiamato da idle seconds() pure. computeservice chiede lo stato sul proprio programma, e qualunque legge le terre prima dopo un curriculum è quello la cui risposta decide se la macchina è rimessa a dormire; quando il reset viveva solo in tick(), una chiamata di stato che arriva prima ha riferito l'identità pre-sleep e la spazzata ha agito su di esso. Quattro test esistenti hanno messo l'ultimo attivo nel passato senza dire quanto tempo la macchina era in piedi, che l'invariante ora espone come una finzione — un inattivo del computer per un'ora è stato sveglio per uno. Dicono entrambi ora. Tre nuovi test coprono il curriculum, il morsetto non diventando una seconda politica inattivo, e una chiamata di stato che arriva prima della prima spunta.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing