Ilmoitus ilmestyi kaksikymmentä minuuttia yhteyden muodostamisen jälkeen. Sen alla oleva laskuri oli käynyt edellisestä aamusta tai tilin viimeisestä todennuksesta lähtien, eikä mikään hälytyksessä kertonut kummasta. Se on oire: muistutus, joka on sidottu johonkin muuhun kuin edessäsi olevaan yhteyteen.

Korjaus ei ole parempi hälytys. Se on päättäminen siitä, mitä kelloa vaatimus tarkoittaa, ja sitten ajastimen sitominen objektiin, joka on olemassa siinä kellossa.

Mikä laukesi ja mitä se laski

Kolme uskottavaa lähdettä tuottaa saman viestin. Kalenterisääntö kulkee kiinteänä paikallisena aikana eikä tiedä tunneleista mitään. Asiakkaan laskuri kertyy, kun mikä tahansa yhteys on pystyssä, ja kestää uudelleenyhdistämiset. Yhdyskäytävän käytäntö vanhentaa istunnon palvelimen puolella ja lähettää ensin varoituksen.

Vain kaksi viimeistä koskevat istuntoa, eivätkä nekään ole samaa mieltä. Asiakkaan laskuri mittaa, mitä paikallinen prosessi havaitsi; yhdyskäytävä mittaa, mitä se todennus ja kirjasi. Lepotila, verkon vaihto tai havainnoijan uudelleenkäynnistys voi erottaa ne tunneiksi, ja siksi hälytys ja pakotettu vanheneminen ajautuvat erilleen.

Kolme kelloa yhden vaatimuksen takana

Aloita kirjoittamalla lause, jonka todella haluat. Varoittaminen ennen kuin yhdyskäytävä lopettaa tämän yhteyden ei ole sama vaatimus kuin muistuttaminen päivän yhdistetyn ajan jälkeen. Se ei ole sama kuin sen raportoiminen, että tämä istunto on ollut pystyssä 23 tuntia. Jokainen versio nimeää eri tapahtuman, ja eri komponentin on vastattava siihen.

Tarkista sitten, onko dataa olemassa. Paikallinen aloitusaikaleima antaa istunnon iän ilman riippuvuutta palvelimesta. Yhdyskäytävän käytäntö antaa jäljellä olevan eliniän, mutta vain jos yhdyskäytävä paljastaa sen. Käyttöraportti antaa keston jälkikäteen, eikä se voi ohjata ennakkoilmoitusta.

Kiinnitä ajastin istuntoon, ei tiliin

Valitse ensin objekti. Tili voi pitää useita laitteita ja useita samanaikaisia istuntoja, joten käyttäjänimeen sidottu muistutus ei voi kertoa, mikä yhteys saavutti iän. Sido se profiiliin ja siihen aktivointiin, ja peru odottava ilmoitus, kun aktivointi päättyy.

Evidence you can readWhat it establishesWhere it misleads
Connection state changes to activeA session started nowDoes not carry the gateway's own session identifier
Duration reported at disconnectTotal service time for that sessionArrives too late for any advance notice
Interim usage updateTime accounted up to that updateStaleness equals the update interval
Local timestamp taken at activationAge of your observationResets whenever the observer restarts

Tuo taulukko on sopimus omalle ilmoittajallesi, ei minkään asiakkaan callback-rajapinnan kuvaus. Mitä asennettu tuote dokumentoi yhteyden tilasta, on lähde, johon sinun on sidottava; jos se paljastaa vain todennustapahtumia, sano se ääneen ja hyväksy karkeampi käytös sen sijaan, että päättelet istunnon.

Testaa sitä lyhyellä kynnyksellä

Älä koskaan debuggaa vuorokauden ajastinta vuorokauden odotuksella. Lisää konfiguroitava kynnys, aseta se kolmeenkymmeneen sekuntiin ja aja neljä siirtymää järjestyksessä: yhdistä, odota, katkaise, yhdistä uudelleen. Jokaisen siirtymän pitäisi tuottaa täsmälleen yksi tilamuutos, ja uudelleenyhdistämisen pitäisi ajoittaa uusi määräaika eikä periä vanhaa.

# 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

Katso aikaleimoja, älä sanamuotoa. Ilmoitus, joka saapuu edellisen istunnon alkuajalla, sitoi väärän objektin, ja ilmoitus, joka saapuu kahdesti yhtä määräaikaa kohden, tarkoittaa, ettei lähetetty-lippua koskaan tallennettu.

Lepotila, uudelleenyhdistäminen ja menetetty toimitus

Lepotila rikkoo molemmat naiivit mallit. Monotoninen lähtölaskenta pysähtyy, kun kone nukkuu, seinäkellon määräaika liikkuu edelleen, ja lepotilan aikana laukeava ajastin toimitetaan myöhässä tai ei ollenkaan. Päätä, mitä käytöstä vaatimuksesi tarvitsee, ja nukuta kone sitten kynnyksen yli ja vahvista se.

Toimitus ansaitsee saman huolen. Jos ilmoitusta ei voi näyttää, laita se jonoon ja tarkista uudelleen, onko kohdeistunto yhä olemassa ennen lopullista näyttämistä; muuten käyttäjää varoitetaan yhteydestä, joka on jo päättynyt. Pakotettu katkaisu ja tunnistetietojen uusiminen pysyvät tämän polun ulkopuolella, koska muistutus, joka hiljaa muuttaa yhteyden kohtalon, on ilmoituksen vaatteisiin puettu käytäntöpäätös.

Aiheeseen liittyvät artikkelit