Dalam aplikasi kami, kami menggunakan Hibernate dan PostgreSQL untuk menyimpan data. Dalam salah satu tabel database kami, kami memiliki kolom diskriminator yang mengatakan misalnya "TIPPSPIEL". Ini adalah string tetap dan tidak dapat dimanipulasi oleh pengguna mana pun.
Tiba-tiba kami memiliki satu entri di tabel besar ini di mana kami memiliki "TIPPQPIEL", bukan "TIPPSPIEL". Kami tidak tahu bagaimana ini bisa terjadi.
Apakah mungkin dengan cara apa pun bahwa hard disk kami beralih satu bit, jadi huruf "S" kami tidak lagi dikodekan sebagai "1010001" tetapi tiba-tiba menjadi "Q" pada hard disk dengan satu bit diaktifkan seperti ini: 1010011?
Saya bukan ahli pada hard disk sedikit fisika tetapi saya kira OS atau disk memiliki checksum dan hal-hal lain untuk memastikan bahwa ini tidak dapat terjadi.
Apakah mungkin hanya satu bit yang beralih sehingga file saya menunjukkan kepada saya huruf "Q" dan bukannya "S"?
PEMBARUAN: Kami membuat analisis lebih lanjut. Database slave kami mendapatkan WAL Records dari master (fitur PostgreSQL). Apa pun: server budak kami harus sinkron. Tetapi budak itu tidak sinkron mengenai baris khusus ini. Kita dapat melihat bahwa itu terjadi beberapa hari yang lalu tanpa ada interaksi dari pengguna pada entri khusus ini. Jadi itu HARUS agak membalik-balik. mengerikan!
sumber
Jawaban:
Sangat jarang kami melihat pertanyaan yang benar-benar menarik di situs ini, jadi terima kasih pertama-tama.
Saya pikir apa yang Anda lihat memang ada kesalahan bit tunggal, luar biasa Anda bisa melihatnya jujur tetapi Anda benar dalam mengasumsikan bahwa bit kedua paling tidak signifikan telah diaktifkan (dengan asumsi Anda menggunakan ASCII bagaimanapun).
Adapun checksum dll ketika ditulis ke disk itu kemungkinan akan diverifikasi sebagai baik - Saya cukup yakin masalah ini telah berkembang setelahnya melalui kesalahan kebocoran magnetik sederhana. Tapi Anda benar, ada pemeriksaan pengkodean yang dilakukan, itu bervariasi dari produsen tetapi mungkin ada kesalahan di suatu tempat mengatakan 'ini terlihat agak aneh' - tetapi opsi apa yang tersedia rantai IO Anda? menolak kamu seluruh blok? Saya akan berasumsi ini adalah disk non-RAIDed tunggal karena mereka RAIDed disk cenderung memiliki lebih banyak opsi yang tersedia ketika mereka mendeteksi kesalahan.
Ini aneh, meskipun hal semacam ini mungkin terjadi beberapa kali per detik di seluruh dunia.
sumber