👤 ⚡Software Engineer | Full Stack Developer C# | .NET | SQL Server | PostgreSQL | API | Web Design | Flutter | Winform⚡
👤 ⚡Software Engineer | Full Stack Developer C# | .NET | SQL Server | PostgreSQL | API | Web Design | Flutter | Winform⚡

[Chia sẻ kinh nghiệm xử lý bug "từ trên trời rơi xuống"]

6 tháng trước
2 phút đọc
[Chia sẻ kinh nghiệm xử lý bug "từ trên trời rơi xuống"]

Câu chuyện là thế này:

Hệ thống có một tính năng đặt đơn hàng từ web/app. Khi người dùng bấm đặt, frontend sẽ gọi một API createOrder, API này sẽ gọi đến một socket NodeJS, socket sẽ gửi tín hiệu realtime cho app của nhân viên xử lý đơn.

Tính năng này 2 tuần trước hoạt động hoàn hảo. Nhưng đùng một cái, tuần này QC test lại thì:

  • Web/app call API: ✅ Thành công, trả về response success
  • Nhưng app nhân viên không nhận được tín hiệu

QC kiểm tra kỹ lại, confirm API vẫn hoạt động. Vậy vấn đề nằm ở đâu?

Mình gợi ý nên liên hệ 2 bạn dev phụ trách backend API và socket. Cả hai bạn đều khẳng định chắc nịch: “2 tuần nay không đụng gì vào đó cả.” Vậy là mọi nghi ngờ đổ dồn về... app 🥲 Mình đành nhận trách nhiệm xử lý dù thật lòng mình cũng không hề đụng vào tính năng này trong 2 tuần qua.

Bắt tay vào debug:

Vì mình không phải người setup phần socket này nên lúc đầu cũng khá mù mờ. Trong quá trình tìm hiểu, mình phát hiện app đang dùng thư viện SocketIoClientDotNet – một thư viện .NET cũ, chỉ hỗ trợ Socket.IO 1.x – 2.x.

Mình hỏi lại dev socket thì được xác nhận hiện tại vẫn dùng version 2.x. Vậy là… vẫn tương thích.

Mình thử tạo Postman để gửi test event – không thấy gì. Thế là mình nhờ Cursor AI build giúp một dự án NodeJS socket để test, vì mình không có quyền truy cập socket server kia. Kết quả test với dự án riêng của mình: Socket vẫn kết nối và hoạt động bình thường.

Sau đó, mình nhờ bạn dev socket gửi thử một event khác (thuộc chức năng khác): ✅ App nhận được.

Gửi lại event gốc (của chức năng bị lỗi): ❌ Không nhận được.

Và cuối cùng – sau khi kiểm tra lại – bạn dev phụ trách socket phát hiện: do đã rollback code trước đó và quên cập nhật lại event này.

👉 Lỗi là do thiếu event sau rollback.

Bài học rút ra:

Không vội đổ lỗi – hãy xác minh kỹ lưỡng.

Đừng nghĩ “không sửa gì thì sẽ không lỗi”.

Debug giúp mình học thêm: hiểu hơn về thư viện SocketIoClientDotNet, về cơ chế socket kết nối giữa các nền tảng khác nhau.

Làm việc nhóm nên giữ tinh thần hỗ trợ nhau, dù lỗi ở đâu thì cùng nhau xử lý cho xong. Miễn sao khách hàng không bị ảnh hưởng.

Có mất thời gian, có bù task... nhưng đổi lại mình được học thêm điều mới, hiểu sâu hơn về hệ thống.

Mục lục
@NguyenKimDuy - Since 2025 - All Right Reserved. Developed by Nguyễn Kim Duy Developer v2.0.0