Az értesítés húsz perccel a csatlakozás után jelent meg. Az alatta lévő számláló az előző reggel óta, vagy a fiók utolsó hitelesítése óta futott, és semmi a riasztásban nem mondta meg, melyik. Ez a tünet: egy emlékeztető, amely valami máshoz kapcsolódik, mint az előtted lévő kapcsolat.

A megoldás nem egy jobb riasztás. Hanem annak eldöntése, melyik órát érti a követelmény, majd az időzítő hozzákötése egy objektumhoz, amely abban az órában létezik.

Mi sült el, és mit számolt

Három valószínű forrás ugyanazt az üzenetet adja. Egy naptárszabály rögzített helyi időben fut, és semmit sem tud az alagutakról. Az ügyfélben lévő számláló addig halmozódik, amíg bármely kapcsolat fennáll, és túléli az újracsatlakozásokat. Egy átjáró-szabályzat a kiszolgáló oldalán járatja le a munkamenetet, és előbb figyelmeztetést küld.

Csak az utolsó kettő szól munkamenetről, és még azok sem értenek egyet. Az ügyfél számlálója azt méri, amit a helyi folyamat megfigyelt; az átjáró azt méri, amit hitelesített és elszámolt. Egy alvás, hálózatváltás vagy a megfigyelő újraindítása órákkal elválaszthatja őket, és ezért távolodik el a riasztás és a kikényszerített lejárat.

Három óra egy követelmény mögött

Kezdje azzal, hogy leírja a mondatot, amelyet valóban szeretne. Figyelmeztetni, mielőtt az átjáró befejezi ezt a kapcsolatot, nem ugyanaz a követelmény, mint egy nap csatlakozott idő után emlékeztetni. Az sem ugyanaz, mint jelenteni, hogy ez a munkamenet 23 órája fennáll. Minden változat más eseményt nevez meg, és más összetevőnek kell rá válaszolnia.

Ezután ellenőrizze, hogy léteznek-e az adatok. Egy helyi kezdési időbélyeg megadja a munkamenet korát a kiszolgálótól függetlenül. Egy átjáró-szabályzat megadja a hátralévő élettartamot, de csak akkor, ha az átjáró közzéteszi. Egy használati jelentés utólag adja meg az időtartamot, és az nem tud előzetes értesítést vezérelni.

Az időzítőt a munkamenethez kösse, ne a fiókhoz

Először az objektumot válassza ki. Egy fiók több eszközt és több egyidejű munkamenetet is tarthat, ezért a felhasználónévhez kötött emlékeztető nem tudja megmondani, melyik kapcsolat érte el a kort. Kösse a profilhoz és ehhez az aktiváláshoz, és amikor az aktiválás véget ér, törölje a függőben lévő értesítést.

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

Az a táblázat a saját értesítője számára készült szerződés, nem egyetlen ügyfél visszahívási API-jának leírása. Amit a telepített termék a kapcsolat állapotáról dokumentál, az a forrás, amelyhez kötődni kell; ahol csak hitelesítési eseményeket tesz közzé, mondja ki hangosan, és fogadja el a durvább viselkedést ahelyett, hogy munkamenetet következtetne ki.

Rövid küszöbbel próbálja ki

Soha ne hibakeressen egy egész napos időzítőt egész napos várakozással. Adjon hozzá egy konfigurálható küszöböt, állítsa harminc másodpercre, és futtasson le négy átmenetet sorrendben: csatlakozás, várakozás, bontás, újracsatlakozás. Minden átmenetnek pontosan egy állapotváltozást kell adnia, és az újracsatlakozásnak új határidőt kell ütemeznie, nem pedig örökölnie a régit.

# 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

Az időbélyegeket nézze, ne a megfogalmazást. Az az értesítés, amely az előző munkamenet kezdő időpontjával érkezik, a rossz objektumhoz kötődött, és az az értesítés, amely egy határidőre kétszer érkezik, azt jelenti, hogy az elküldve jelző soha nem került mentésre.

Alvás, újracsatlakozás és elmaradt kézbesítés

Az alvás mindkét naiv tervet megtöri. A monoton visszaszámlálás megáll, miközben a gép alszik, a falióra szerinti határidő tovább mozog, és az alvás közben elsülő időzítő késve vagy egyáltalán nem érkezik meg. Döntse el, milyen viselkedésre van szüksége a követelményének, majd altassa el a gépet a küszöbön túl, és erősítse meg.

A kézbesítés ugyanazt a gondosságot érdemli. Ha az értesítés nem jeleníthető meg, tegye sorba, és a végleges megjelenítés előtt ellenőrizze újra, hogy a cél-munkamenet még létezik-e; különben a felhasználó egy már befejeződött kapcsolatról kap figyelmeztetést. A kényszerített bontás és a hitelesítő adatok megújítása ezen az úton kívül marad, mert az az emlékeztető, amely csendben megváltoztatja a kapcsolat sorsát, értesítésnek öltözött szabályzatdöntés.

Kapcsolódó cikkek