Zašto se podsjetnik VPN-a od 23 sata aktivira za pogrešnu sesiju
Obavijest od 23 sata treba slijediti jednu sesiju, a ne račun. Vežite tajmer za vezu koja je počela i tretirajte spavanje i ponovno povezivanje kao odvojene slučajeve.
Obavijest se pojavila dvadeset minuta poslije uspostavljanja veze. Brojač pod njom je išao još od prethodnog jutra, ili od trenutka kada je račun posljednji put potvrđen, a nijedna riječ u upozorenju nije kazala koja je od te dvije stvari. To je simptom: podsjetnik privezan za nešto drugo umjesto za vezu pred vama.
Rješenje nije bolje upozorenje. Rješenje je odluka o tome na koji sat zahtjev misli, a potom privezivanje tajmera za objekat koji na tom satu postoji.
Šta se aktiviralo i šta je brojalo
Tri vjerovatna izvora daju istu poruku. Kalendarsko pravilo radi u nepromjenljivom lokalnom vremenu i ništa ne zna o tunelima. Brojač u klijentu raste dok god je bilo kakva veza uspostavljena i preživljava ponovna povezivanja. Politika pristupnika gasi sesiju na strani servera i najprije pošalje upozorenje.
Samo se posljednja dva tiču sesije, a ni ona nisu saglasna. Brojač klijenta mjeri ono što je lokalni proces zapazio; pristupnik mjeri ono što je potvrdio i obračunao. Spavanje, promjena mreže ili restart posmatrača mogu ih razdvojiti satima, i zato se upozorenje i nametnuti istek sve više razilaze.
Tri sata iza jednog zahtjeva
Počnite tako što ćete napisati rečenicu koja vam je zaista potrebna. Upozoriti prije nego pristupnik prekine ovu vezu nije isti zahtjev kao podsjetiti poslije dana provedenog povezan. Nije isto ni kao izvijestiti da ova sesija traje već 23 sata. Svaka varijanta imenuje drugačiji događaj, i različita komponenta mora na njega odgovoriti.
Zatim provjerite postoje li podaci. Lokalni početni vremenski pečat daje starost sesije bez oslonca na server. Politika pristupnika daje preostali vijek, ali samo ako ga pristupnik izlaže. Izvještaj o potrošnji daje trajanje naknadno, a to ne može pokretati unaprijed poslano obavještenje.
Vežite tajmer za sesiju, ne za račun
Najprije izaberite objekat. Jedan račun može držati više uređaja i više istovremenih sesija, pa podsjetnik vezan za korisničko ime ne može kazati koja je veza dostigla taj staž. Privežite ga za profil i to aktiviranje, a kada aktiviranje istekne, poništite obavještenje koje čeka.
| Evidence you can read | What it establishes | Where it misleads |
|---|---|---|
| Connection state changes to active | A session started now | Does not carry the gateway's own session identifier |
| Duration reported at disconnect | Total service time for that session | Arrives too late for any advance notice |
| Interim usage update | Time accounted up to that update | Staleness equals the update interval |
| Local timestamp taken at activation | Age of your observation | Resets whenever the observer restarts |
Ta tabela je ugovor za vaš vlastiti obavještavač, a ne opis povratnog API-ja bilo kojeg klijenta. Ono što instalirani proizvod dokumentuje o stanju veze jest izvor za koji se treba vezati; gdje izlaže samo događaje potvrde, recite to glasno i prihvatite grublje ponašanje umjesto da zaključujete o sesiji.
Testirajte ga kratkim pragom
Nikada ne tražite grešku u cjelodnevnom tajmeru cjelodnevnim čekanjem. Dodajte podesiv prag, postavite ga na trideset sekundi i provedite četiri prelaza redom: poveži, čekaj, prekini, ponovo poveži. Svaki prelaz treba dati tačno jednu promjenu stanja, a ponovno povezivanje treba zakazati novi rok umjesto da naslijedi stari.
# current connection state and profile identity
nmcli -f GENERAL.STATE,GENERAL.CONNECTION connection show work
# the notifier unit you wrote: does it restart the deadline or resume it?
journalctl --user -u vpn-timer.service --since "-5 min" -o cat
Gledajte vremenske pečate, a ne formulaciju. Obavještenje koje stigne s početnim vremenom prethodne sesije privezalo je pogrešan objekat, a obavještenje koje stigne dvaput za jedan rok znači da oznaka poslano nikada nije bila sačuvana.
Spavanje, ponovno povezivanje i propuštena dostava
Spavanje razbija oba naivna rješenja. Monotono odbrojavanje stane dok mašina spava, rok po zidnom satu nastavlja se kretati, a tajmer koji se aktivira tokom spavanja biva dostavljen kasno ili nikako. Odlučite koje ponašanje vaš zahtjev traži, pa uspavajte mašinu preko praga i potvrdite.
Dostava zaslužuje istu pažnju. Ako se obavještenje ne može prikazati, stavite ga u red i ponovo provjerite postoji li ciljna sesija prije nego što ga konačno prikažete; inače korisnik biva upozoren na vezu koja je već završila. Prisilno prekidanje i obnavljanje akreditiva ostaju izvan ove staze, jer podsjetnik koji tiho mijenja sudbinu veze jeste politička odluka obučena u obavještenje.