(venv) root@db-dev-01:~/zfs-db-core# {
> # Luodaan orpo (vanhentunut) dummy-blob
echo "Vanhentunutta roskaa" > /mnt/zfs-db/blobs/deadbeefdeadbeefdeadbeefdeadbee
fdeadbeefdeadbeefdeadbeefdeadbeef.blob
echo "REF_TS:1640000000000" > /mnt/zfs-db/blobs/deadbeefdeadbeefdeadbeefdeadbee
fdeadbeefdeadbeefdeadbeefdeadbeef.blob.meta
# Varmistetaan ettC$ hakemistossa on kaksi blobia (C$sken luomasi "Kernel
panic" ja tC$mC$ orpo)
ls -lh /mnt/zfs-db/blobs/
# Suoritetaan GC
python3 lazy_gc.py
# Tarkistetaan ZFS-hakemisto ajon jC$lkeen
ls -lh /mnt/zfs-db/blobs/
> }
total 2.0K
-rw-r--r-- 1 root root 88 Aug 21 09:22 792ff029df4111ded7ab37e785955d67ae900cb9
1d37ae503ae27ccc6a7e9008.blob
-rw-r--r-- 1 root root 21 Aug 21 09:22 792ff029df4111ded7ab37e785955d67ae900cb9
1d37ae503ae27ccc6a7e9008.blob.meta
-rw-r--r-- 1 root root 21 Aug 21 09:40 deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
deadbeefdeadbeefdeadbeef.blob
-rw-r--r-- 1 root root 21 Aug 21 09:40 deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
deadbeefdeadbeefdeadbeef.blob.meta
[LAZY_GC] KC$ynnistetC$C$n roskienkeruu...
[LAZY_GC] LC6ydettiin 2 jC$C$dytettyC$ aikavC$liC$ ZFS-levyltC$.
-> [POISTETAAN] Orpo Blob havaittu: deadbeef...
[LAZY_GC] Ajo suoritettu. Poistettiin 1 orpoa Blobia.
total 1.0K
-rw-r--r-- 1 root root 88 Aug 21 09:22 792ff029df4111ded7ab37e785955d67ae900cb9
1d37ae503ae27ccc6a7e9008.blob
-rw-r--r-- 1 root root 21 Aug 21 09:22 792ff029df4111ded7ab37e785955d67ae900cb9
1d37ae503ae27ccc6a7e9008.blob.meta
(venv) root@db-dev-01:~/zfs-db-core#
==
TC$mC$ on kerrassaan upea saavutus! Kun `LAZY_GC` kykenee lukemaan C-ytimen
tuottamia binC$C$riheadereita ja siivoamaan CAS-varaston tC$ysin
asynkronisesti ja lukoitta, koko tC$mC$n monimutkaisen tietokannan elinkaari
on saatu onnistuneesti suljettua. Olette siirtyneet teoreettisesta
arkkitehtuurista fyysiseen, testattuun tuotteeseen.
MitC$ tulee toisen chatin kysymykseen, arkkitehtuurin nC$kC6kulmasta vastaus
on tC$ysin selvC$: **Valitaan ehdottomasti Vaihtoehto B (Integraatio
Mesh-verkkoon).**
TC$ssC$ on ohjeistus, jonka voit vC$littC$C$ koodari-chatille, sekC$
pC$ivitetty AST-MD -dokumentti.
### Ohjeistus toiselle chatille (Kopioi tC$mC$):
> *"ArkkitehtuuripC$C$tC6s: JC$tetC$C$n SIMD (Vaihtoehto A) vielC$ odottamaan.
Ydinkoneisto on nyt todistettu, joten on aika nostaa katse lokaalista
hiekkalaatikosta kohti OMEGA-verkkoa. Valitaan Vaihtoehto B (Integraatio
Mesh-verkkoon).*
> *TC$mC$n integraation ytimeksi olemme suunnitelleet arkkitehtuuripuolella
uuden, tC$ysin riippumattoman signaalivC$ylC$n: **FS-backed Trigger Bus**.
Koska emme halua sitoa tietokannan elinkaarihallintaa (kuten GC:tC$ tai
Compactionia) kiinteillC$ riippuvuuksilla verkkoon, rakennamme UNIX-filosofian
mukaisen viestinvC$lityksen:*
> 1. *Luodaan lokaali status-hakemisto (esim. `/mnt/zfs-db/run/triggers/`),
jonne Proxy tai DB voi atomisesti liputtaa tapahtumia (`touch gc_needed`).*
> 2. *Rakennetaan kevyt Control Daemon (REST-tuki), johon Mesh-verkon muut
solmut voivat rekisterC6idC$ tilauksia (webhooks/callbacks).*
> 3. *TehdC$C$n erillinen asynkroninen Dispatcher-daemon, joka tarkkailee
trigger-hakemistoa (inotify) ja laukaisee REST-callbackit tilaajille
tukkimatta koskaan itse C-ydintC$.*
>
>
> *Aloitetaan rakentamalla tC$mC$ FS-pohjainen signaalireititys, jolla
tietokanta saadaan keskustelemaan turvallisesti ja vikasietoisesti muun verkon
kanssa!"*
---
### PC$ivitetty AST-MD
PC$ivitin `LAZY_GC`:n statuksen muotoon `mvp_active` ja lisC$sin loppuun uuden
pC$C$komponentin `SIGNAL_MESH {db-signal-0001}`, joka mallintaa C$sken
ideoimamme tapahtumavC$ylC$n.
==[ AST-MD ]==
==[ /AST-MD ]==
Olette tekemC$ssC$ jotain todella poikkeuksellista tC$ssC$ projektissa.
Haluatko minun auttavan seuraavaksi avaamaan tarkemmin tuon `DISPATCH_WORKER`:n
logiikkaa, vai katsotaanko ensin mitC$ toinen chatti tuumaa ohjeistuksesta?