User@elli:/opt/edge$ ./start.sh
tail -f /opt/edge/gateway.log
KC$ynnistetC$C$n EDGE_API_GATEWAY (portti 3000)...
API Gateway kC$ynnistetty taustalle PID:llC$ 24769.
Voit seurata lokeja komennolla: tail -f /opt/edge/gateway.log
[Server] No snapshot found, starting fresh
[Server] Core initialized [Server]
Allocated 3146112 bytes for buses [Server] IN bus
created [Server] Worker 0 spawned
[Server] Worker 1 spawned
[Server] Snapshot timer started (every 10000ms)
[Worker 0] Starting...
[Worker 1] Starting...
{"level":30,"time":1788235629893,"pid":24769,"hostname":"elli","msg":"Server
listening at http://127.0.0.1:3000"} {"level":30,"time":1788235
629896,"pid":24769,"hostname":"elli","msg":"Server listening at
http://192.168.111.83:3000"}
{"level":30,"time":1788235629896,"pid":24769,"hostname":"elli","msg":"Server
listening at http://100.102.190.120:3000"}
{"level":30,"time":1788235629897,"pid":24769,"hostname":"elli","msg":"API
Gateway & Swagger pystyssC$!"}
[Snapshot] Error: TypeError: this.core.getSharedArrayBuffer is not a function
at OmegaServer.takeSnaps
hot (/opt/lockfree-ram-db/app.js:133:29)
at Timeout._onTimeout (/opt/lockfree-ram-db/app.js:1
15:12) at listOnTimeout (node:internal/timers:605:17)
at process.processTimers (node:internal/timers:541:7) [Snapshot] Error:
TypeError: this.core.getSharedArrayBuffer is not a function
at OmegaServer.takeSnapshot
(/opt/lockfree-ram-db/app.js:133:29)
at Timeout._onTimeout (/opt/lockfree-ram-db/app.js:115:1
2) at listOnTimeout (node:internal/timers:605:17) at
process.processTimers (node:internal/timers:541:7) [Snapshot] Error:
TypeError: this.core.getSharedArrayBuffer is not a function
at OmegaServer.takeSnapshot
(/opt/lockfree-ram-db/app.js:133:29)
at Timeout._onTimeout (/opt/lockfree-ram-db/app.js:115:1
2) at listOnTimeout (node:internal/timers:605:17) at
process.processTimers (node:internal/timers:541:7)
TC$mC$ on aivan loistava esimerkki siitC$, miksi hajautettu arkkitehtuurikehity
s tekoC$lyn kanssa vaatii tarkkuutta!
MikC$ meni pieleen?
TC$ssC$ kC$vi klassinen tekoC$lyn "koodin yhdistC$misen" (merge) virhe. Kun
DevChat-1 rakensi sinulle Snapshot-ominaisuuden, se lisC$si core.js
-tiedostoon metodin getSharedArrayBuffer(). Kuitenkin, kun DevChat-2 rakensi
uuden core_2.js -tiedoston indeksointia varten, se unohti lisC$tC$ tC$mC$n
edellisessC$ chatissa keksityn metodin uuteen versioon.
Kun app.js yrittC$C$ nyt 10 sekunnin vC$lein ottaa dumpin muistista komennolla
this.core.getSharedArrayBuffer(), se kaatuu, koska kyseistC$ metodia ei enC$C$
ole! Onneksi tC$mC$ on taustaprosessi, joten itse API Gateway pysyi pystyssC$,
mutta varmuuskopioita ei synny.
Miten korjata tC$mC$ heti
Avaa /opt/lockfree-ram-db/core.js ja lisC$C$ tC$mC$ puuttuva puoli tusinaa
riviC$ takaisin OmegaCore-luokan sisC$lle (esimerkiksi heti initHashTable()
-metodin perC$C$n):
/**
* Returns the underlying SharedArrayBuffer.
* Used for zero-copy snapshot dumping.
*/
getSharedArrayBuffer() {
return this.sab;
}
Tallenna tiedosto ja buuttaa palvelin uudelleen:
./start.sh
tail -f /opt/edge/gateway.log
Nyt, kun odotat 10 sekuntia, lokiin pitC$isi ilmestyC$ kaunis viesti:
[Snapshot] Written X bytes to /opt/lockfree-ram-db/snapshot.bin
Kun nC$et tuon tekstin, meillC$ on kC$sissC$mme maailmanluokan Lock-free RAM
-tietokanta, joka on paitsi salamannopea ja O(1)-indeksoitu, myC6s
sC$C$nnC6llisesti levylle varmuuskopioituva!
Oletko valmis siirtymC$C$n kolmanteen DevChatiin ja rC$jC$yttC$mC$C$n potin
graafisidoksilla (Relations), kunhan saat tC$mC$n ensin vihreC$lle?