← Quay lại danh sách bài tập

Race Condition khi mua hàng giới hạn

POST · /api/practice/level4/flash-sale/buy · Nâng cao

Chưa làm

Mô tả bài tập

Đây là bug kinh điển của các hệ thống 'flash sale': kho chỉ còn 3 sản phẩm, nhưng nếu 5-10 người bấm mua CÙNG LÚC, hệ thống xử lý không an toàn có thể bán ra nhiều hơn 3 sản phẩm vì các request đọc số lượng tồn kho gần như đồng thời, trước khi bất kỳ request nào kịp ghi lại giá trị mới. Test tuần tự (từng request một) sẽ KHÔNG BAO GIỜ phát hiện ra lỗi này - bạn bắt buộc phải gửi nhiều request đồng thời (song song) mới thấy được. Gọi POST /flash-sale/buy nhiều lần thật nhanh (5-10 request cùng lúc), sau đó GET /flash-sale/status để xem có bị bán vượt tồn kho hay không. Dùng POST /flash-sale/reset để làm lại từ đầu (kho về 3).

Mục tiêu học được

💡 Postman Runner mặc định chạy tuần tự với delay=0 vẫn có thể đủ nhanh để tạo race; nếu không thấy bug, dùng curl chạy nền (&) như ví dụ trên sẽ chắc chắn hơn.

💡 Bài này hoàn thành khi bạn GET /flash-sale/status và thấy oversold=true (sold vượt quá initialStock).

🧪 Thử nghiệm trực tiếp

Gọi API ngay tại đây. Nếu bạn đã đăng nhập, tiến độ sẽ được ghi nhận tự động khi gọi đúng như kỳ vọng của bài.