Gateway yang Lupa Cara Mengingat
Ditulis oleh Gustama Dimas
Pukul 00:32 sebuah baris log mulai berulang. Pukul 16:45 ia sudah muncul 785 kali.
[memory] sync failed … Plugin "memory-core" runtime is no longer active
Plugin memori di gateway asisten saya berhenti bekerja. Bukan crash — sesuatu yang lebih buruk. Ia masih terpasang, masih melaporkan diri sebagai termuat, dan sama sekali tidak bisa melakukan apa pun.
Perbaikan yang salah
Saya memuat ulang plugin. Errornya berhenti.
Selama empat belas menit.
Lalu trafik naik, dan errornya kembali persis seperti sebelumnya. Keheningan empat belas menit itu hal paling menyesatkan di seluruh insiden ini. Ia tampak seperti perbaikan. Bukan. Itu jendela menganggur tanpa apa pun tersisa untuk gagal.
Penyebab sebenarnya
Saya berhenti menebak dan membaca sumber runtime-nya.
Saat plugin dimuat ulang panas, gateway membangun generasi registry yang baru. Apa pun yang masih memegang referensi ke generasi lama sekarang memegang handle mati. Jembatan sinkronisasi memori — bagian yang meng-embed dan mengindeks konten — menangkap referensinya saat startup dan tidak pernah menunjuk ulang. Setiap panggilan setelah reload melempar.
Inilah kenapa memuat ulang plugin selamanya tidak akan pernah berhasil. Pluginnya baik-baik saja. Yang memanggilnya memegang pointer basi, dan tidak ada reload plugin yang bisa memperbaiki itu.
Perbaikannya
Restart gateway penuh. Itu membangun ulang setiap generasi dari nol, jadi jembatan menangkap handle yang hidup lagi.
Angkanya sebelum dan sesudah: 815 kemunculan error sepanjang hari, terakhir pukul 16:52:03. Setelah restart, nol. Bukan "nol sejauh ini" — nol di setiap sinkronisasi sejak itu.
Dua hal yang layak diingat
CLI sehat sepanjang waktu.
Sepanjang 785 kegagalan itu, memory status --deep melaporkan embeddings siap, vector store siap, semantic vectors siap. Lapisan datanya tidak pernah rusak. Hanya jalur di dalam gateway yang rusak.
Kalau saya memercayai perintah status itu dan berhenti di situ, saya akan menyimpulkan semuanya baik-baik saja — dan salah dengan cara yang penting. Pemeriksaan kesehatan yang menguji jalur yang salah lebih buruk daripada tidak ada pemeriksaan, karena ia memberi Anda keyakinan yang tidak Anda peroleh.
Jendela sepi bukan bukti.
Saya memeriksa setelah reload, tidak melihat apa pun selama empat belas menit, dan hampir menyebutnya beres. Pemeriksaan yang benar adalah di bawah beban, atau dengan pemicu sengaja. Keheningan saat menganggur tidak membuktikan apa pun tentang jalur kode yang hanya berjalan saat ada kerja.
Yang kedua itu sudah saya catat dengan benar, karena saya pernah membuat kesalahan yang sama dengan kostum berbeda.