Hãy xem các phần sau để được trợ giúp nếu bạn gặp vấn đề.
Trạng thái mất kết nối trong Fleet Engine
Khi làm việc với Fleet Engine, hãy thiết kế phương thức triển khai để dự đoán lỗi. Ví dụ: nếu bạn gửi yêu cầu đến Fleet Engine để cập nhật một xe, thì Fleet Engine có thể phản hồi kèm theo lỗi cho biết xe đó không tồn tại. Sau đó, quá trình triển khai của bạn sẽ tạo lại xe ở trạng thái mới.
Trong trường hợp cực kỳ hiếm gặp là Fleet Engine gặp lỗi nghiêm trọng, bạn có thể cần tạo lại hầu hết hoặc tất cả các xe và nhiệm vụ. Nếu tỷ lệ tạo trở nên quá cao, một số yêu cầu có thể lại không thành công do vấn đề về hạn mức vì các quy trình kiểm tra hạn mức được áp dụng để tránh các cuộc tấn công từ chối dịch vụ (DOS). Trong trường hợp này, hãy giảm tốc độ tạo lại bằng cách sử dụng chiến lược thời gian đợi cho các lần thử lại.
Số lần thử lại
Hãy đảm bảo hệ thống của bạn triển khai các lần thử lại cho các yêu cầu đến Fleet Engine vì đôi khi các yêu cầu đó có thể không thành công. Thư viện ứng dụng Fleet Engine sẽ thực hiện lại theo mặc định.
Trạng thái mất kết nối trong ứng dụng dành cho tài xế
Nếu ứng dụng của tài xế gặp sự cố, thì ứng dụng đó phải tạo lại trạng thái hiện tại trong SDK Tài xế. Ứng dụng nên cố gắng tạo lại các tác vụ để đảm bảo rằng các tác vụ đó tồn tại và khôi phục trạng thái hiện tại của các tác vụ đó. Ứng dụng cũng nên tạo lại và đặt rõ ràng danh sách các điểm dừng cho SDK Tài xế.
Lưu ý: Bạn phải tự thực hiện các hoạt động khôi phục này mà không dựa vào thông tin từ Fleet Engine, ngoại trừ các lỗi cho biết liệu một thực thể đã tồn tại trong cơ sở dữ liệu hay chưa và thời điểm tồn tại. Nếu một thực thể đã tồn tại, thì lỗi đó có thể được hấp thụ và thực thể có thể được cập nhật bằng mã nhận dạng của thực thể đó.
Lỗi quá thời hạn
Nếu bạn gặp lỗi DEADLINE_EXCEEDED khi gọi Fleet Engine, thì yêu cầu đó đã mất nhiều thời gian hơn thời gian chờ đã định cấu hình. Thư viện ứng dụng Fleet Engine có thời gian chờ mặc định, nhưng bạn có thể cần điều chỉnh thời gian chờ này.
Để biết thông tin chung về thời hạn gRPC, hãy xem bài viết gRPC và thời hạn.
Để định cấu hình thời hạn khi sử dụng thư viện ứng dụng Java của Fleet Engine, bạn có thể điều chỉnh chế độ cài đặt thử lại RPC. Ví dụ sau đây cho thấy cách định cấu hình thời gian chờ tuỳ chỉnh khi thiết lập VehicleService:
VehicleServiceSettings.Builder settingsBuilder = VehicleServiceSettings.newBuilder();
// Set the timeout to 10 seconds.
settingsBuilder
.getVehicleSettings()
.setRetrySettings(
settingsBuilder.getVehicleSettings().getRetrySettings().toBuilder()
.setTotalTimeout(java.time.Duration.ofSeconds(10))
.build());
VehicleServiceClient client = VehicleServiceClient.create(settingsBuilder.build());
Các lỗi API thường gặp
Phần này liệt kê các lỗi API thường gặp mà bạn có thể gặp phải, nguyên nhân và cách giải quyết.
NOT_FOUND (HTTP 404)
Không tìm thấy thực thể được yêu cầu (chẳng hạn như xe, chuyến đi hoặc việc cần làm).
- Nguyên nhân: Thường là do cố gắng lấy, cập nhật hoặc xoá một thực thể bằng mã nhận dạng không tồn tại trong cơ sở dữ liệu.
- Biện pháp khắc phục: Xác minh rằng mã nhận dạng thực thể là chính xác và thực thể đã được tạo thành công trước khi bạn cố gắng truy cập vào thực thể đó.
ALREADY_EXISTS (HTTP 409)
Thực thể mà bạn đang cố tạo đã tồn tại.
- Nguyên nhân: Do gọi một phương thức tạo (như
CreateVehiclehoặcCreateTrip) bằng một mã nhận dạng đang được sử dụng. - Biện pháp khắc phục: Cập nhật thực thể hiện có hoặc sử dụng một mã nhận dạng duy nhất mới cho yêu cầu tạo.
PERMISSION_DENIED (HTTP 403)
Bạn không có các quyền cần thiết để hoàn tất yêu cầu.
- Nguyên nhân: Lỗi này thường xảy ra nếu Mã thông báo web JSON (JWT) của bạn thiếu các thông tin xác nhận quyền sở hữu chính xác hoặc nếu tài khoản dịch vụ ký JWT thiếu các vai trò IAM bắt buộc. Ví dụ: "JWT không chứa phạm vi phù hợp cho chuyến đi được yêu cầu".
- Biện pháp khắc phục: Kiểm tra quyền của Tài khoản dịch vụ và đảm bảo các thông báo xác nhận quyền sở hữu JWT của bạn có phạm vi chính xác cho thực thể mà bạn đang cố gắng truy cập.
INVALID_ARGUMENT (HTTP 400)
Một hoặc nhiều đối số được truyền trong yêu cầu không hợp lệ.
- Nguyên nhân: Điều này có thể xảy ra vì nhiều lý do, chẳng hạn như cung cấp giá trị nằm ngoài phạm vi (ví dụ: sức chứa tối đa), thiếu trường bắt buộc (ví dụ:
VehicleType) hoặc cung cấp toạ độ không hợp lệ cho điểm lấy hàng. - Biện pháp khắc phục: Xem thông báo lỗi để biết trường cụ thể không hợp lệ và đảm bảo yêu cầu của bạn tuân thủ thông số kỹ thuật của API.
FAILED_PRECONDITION (HTTP 400)
Thao tác bị từ chối vì hệ thống không ở trạng thái cần thiết để thực thi thao tác.
- Nguyên nhân: Các nguyên nhân phổ biến bao gồm việc cố gắng thay đổi chuyến đi
COMPLETEhoặcCANCELEDsang một trạng thái khác hoặc cố gắng chỉ định nhiệm vụCLOSEDcho một xe. - Biện pháp khắc phục: Đảm bảo trạng thái hiện tại của thực thể cho phép thao tác mà bạn đang cố gắng thực hiện. Hãy kiểm tra thông báo lỗi để biết các lỗi vi phạm cụ thể theo tiểu bang.
UNAVAILABLE (HTTP 503)
Dịch vụ này hiện không hoạt động.
- Nguyên nhân: Điều này cho biết có vấn đề tạm thời với dịch vụ Fleet Engine.
- Biện pháp khắc phục: Bạn có thể thử lại yêu cầu một cách an toàn bằng thuật toán thời gian đợi luỹ thừa.