20 năm cày code, anh em có bao giờ ôm một cái ticket mà tuổi đời của nó còn già hơn cả số năm kinh nghiệm của mấy em fresher vừa vào công ty không? Hôm nay, thế giới lập trình vừa chứng kiến một cột mốc chấn động cõi mạng: MySQL đã âm thầm fix cái bug truyền thuyết #11472 sau… 2 thập kỷ để nó bám bụi.
Nguồn cơn của cái ticket "hóa thạch" này từ đâu?
- Chuyện đùa mà như thật các ông ạ. Cái lỗi này sống dai như đỉa từ thời Napoleon cởi truồng, đến mức nó không còn là một cái bug nữa, mà hóa thành mẹ một hệ tư tưởng, một mẩu truyện dân gian (folklore) trong giới DBA.
- Cứ vài năm, lại có một thanh niên rảnh rỗi nào đó đào mộ nó lên, trêu chọc sự bất lực của đội ngũ MySQL.
- Đa số đạo hữu đều thề sống thề chết rằng MySQL sẽ đ*o bao giờ thèm đụng vào nó đâu. Nó giống như một cái "undead ticket" - cái xác sống không ai dám chọc gậy bánh xe vì sợ... sập server.
- Và rồi đùng một cái, trạng thái chuyển sang "Fixed". Ảo ma Canada thật sự.
- Hài hước nhất là, cái comment mới nhất trên ticket lại chính là của pháp sư ẩn danh đã report nó từ tận 20 năm trước. Chắc do bài quá cổ nên mấy sếp khóa mõm (lock thread) luôn mấy user khác, chỉ cho chả vào chốt hạ.
Giang cư mận Reddit đang combat cái gì?
Vừa nghe tin sấm sét, cộng đồng anh em coder chia làm nhiều thái cực cực kỳ tấu hài:
- Phe "thành kính phân ưu": Lên mạng kêu gào thảm thiết vì lỡ xài cái bug đó như một feature (tính năng) để lách luật. Khóc lóc van xin "Sửa lại như cũ đi các cụ ơi, toang mẹ app em rồi!".
- Phe não to thực dụng: Phân tích rất logic rằng, 20 năm tồn tại ngoài tự nhiên thì chắc chắn có hàng vạn cái trick lỏ, workaround được đẻ ra để sống chung với lũ. Nay fix một phát, dám cá là hàng loạt hệ thống sẽ lăn quay ra ngỏm. Anh em nào đang chạy con vps thì liệu mà backup data trước khi update nhé, không là ăn cám cả lũ.
- Phe lão làng: Ngước mắt nhìn trời, lệ tuôn rơi bùi ngùi thả nhẹ một câu: "Sống đến tuổi này mới thấy ngày nó được fix".
- Phe thất tình (Đỉnh cao của drama): Anh em đào lại được cái comment huyền thoại của thanh niên Jay Godara vào năm 2020: "Anh em ơi, người yêu bảo bao giờ cái bug này fix thì em cưới anh. Mình đợi từ 2017 đến giờ, ẻm bỏ đi theo thằng Gary mất rồi. Gary, mài là đồ khốn!". Đọc xong cười ra nước mắt.
Góc nhìn từ Coding4Food: Đừng tin lời đàn bà và... đừng tin MySQL
Thấy chưa anh em? Gái có thể quay xe đi theo một thằng Gary ất ơ nào đó chỉ vì cái database củ lìn không chịu cập nhật. Bị cắm sừng vì một cái bug MySQL chắc chắn là nỗi đau IT lớn nhất thế kỷ này.
Nói nhây vậy thôi, bài học rút ra ở đây là định luật Hyrum (Hyrum's Law): Khi một cái API hay hệ thống tồn tại đủ lâu, mọi lỗi lầm của nó đều sẽ bị user lợi dụng và biến thành tính năng. Việc dọn dẹp tech nợ (tech debt) là đáng tuyên dương, nhưng vá một cái lỗ hổng 20 năm tuổi thì giống như rút cái đinh duy nhất đang giữ cho tòa nhà không sập vậy. Khuyên chân thành mấy đồng đạo: Cứ bình tĩnh, từ từ hẵng up bản mới. Cứ để mấy tay to test trước trên production, bể thì họ chịu, mình lom dom ăn ké hotfix thôi. Code đang chạy ngon thì đ*o đụng vào, nhớ nhé!
Nguồn hóng hớt: Reddit - The infamous 20 year old MySQL Bug #11472 has been fixed.