Tingkat percobaan ulang melewati 42% pada relayer transaksi kami minggu lalu. Bukan kegagalan—hanya percobaan ulang. Perbedaan itu penting, tetapi juga membuatnya lebih mudah untuk diabaikan pada awalnya.
Tidak terlihat seperti masalah jaringan. Titik akhir RPC responsif, waktu blok normal, tidak ada kemacetan yang jelas. Masalah nyata ternyata adalah pergeseran urutan antara layanan. Penandatangan kami, validator, dan penyiar tidak beroperasi berdasarkan asumsi yang sama lagi. Perbedaan kecil dalam penanganan nonce, kebijakan gas yang sedikit ketinggalan zaman, beberapa pemeriksaan kondisional yang ditambahkan seiring waktu.
Tidak ada yang rusak secara langsung. Tetapi transaksi mulai mendapatkan “ditolak lembut.” Tidak tidak valid, hanya tidak sinkron cukup untuk memicu percobaan ulang.
Di situlah ia menyebar. Percobaan ulang kembali ke antrean, meningkatkan beban, dan memicu batas tingkat di hulu. Operator turun tangan—reset nonce manual, penghapusan selektif, pengalihan melalui RPC cadangan. Buku panduan membantu, tetapi tidak ditulis untuk versi sistem ini. Jadi orang-orang menambal di sekitarnya. Lebih banyak langkah pengaman, lebih banyak pengecualian.
Akhirnya, sistem menghabiskan lebih banyak waktu untuk memperbaiki dirinya sendiri daripada memproses pekerjaan baru.
Kami harus menyederhanakan. Manajemen nonce yang selaras di seluruh layanan, menghapus lapisan validasi duplikat, memperketat kebijakan percobaan ulang sehingga mereka benar-benar gagal saat seharusnya. Juga mengandalkan ROBO untuk menormalkan bagaimana transaksi bergerak antar tahap—lebih sedikit dugaan antara komponen.
Tingkat percobaan ulang kini kembali di bawah 8%.
Saya rasa inti dari ini adalah: percobaan ulang mudah ditoleransi sampai mereka diam-diam menjadi beban utama Anda.
$ROBO @Fabric Foundation #ROBO
