Hãy xem các phần sau đây để được trợ giúp nếu bạn gặp phải vấn đề.
Trạng thái bị mất trong Fleet Engine
Khi làm việc với Fleet Engine, hãy thiết kế quá trình triển khai để dự đoán các lỗi. Ví dụ: nếu bạn gửi yêu cầu đến Fleet Engine để cập nhật một chiếc xe, thì Fleet Engine có thể phản hồi bằng một lỗi cho biết rằng chiếc 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 sự cố nghiêm trọng, bạn có thể cần phải tạo lại hầu hết hoặc tất cả các xe và nhiệm vụ. Nếu tốc độ tạo quá cao, một số yêu cầu có thể 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.
Thử lại
Đả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 này có thể không thành công. Theo mặc định, thư viện ứng dụng Fleet Engine sẽ thử lại.
Mất trạng thái trong ứng dụng dành cho tài xế
Nếu ứng dụng dành cho tài xế gặp sự cố, ứng dụng phải tạo lại trạng thái hiện tại trong Driver SDK. Ứ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 chúng. Ứng dụng cũng nên tạo lại và đặt danh sách các điểm dừng một cách rõ ràng cho Driver SDK.
Lưu ý: Bạn phải tự thực hiện các thao tác khôi phục này mà không dựa vào thông tin từ Fleet Engine, ngoài 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 nào. 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 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 bạn 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.
- 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ố gắng tạo đã tồn tại.
- Nguyên nhân: Do gọi một phương thức tạo (chẳng hạn như
CreateVehiclehoặcCreateTrip) bằng một mã nhận dạng đã được sử dụng. - Khắc phục: Thay vào đó, hãy 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 bị thiếu các khai báo chính xác hoặc nếu tài khoản dịch vụ ký JWT bị thiếu các vai trò IAM bắt buộc. Ví dụ: "JWT does not contain a matching scope for requested trip." (JWT không chứa phạm vi phù hợp cho chuyến đi được yêu cầu.)
- Khắc phục: Kiểm tra quyền của Tài khoản dịch vụ và đảm bảo các khai báo 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ư bạn cung cấp một giá trị nằm ngoài phạm vi (ví dụ: sức chứa tối đa), thiếu một trường bắt buộc (ví dụ:
VehicleType) hoặc cung cấp toạ độ không hợp lệ cho một điểm đến lấy hàng. - Khắc phục: Xem thông báo lỗi cho trường cụ thể không hợp lệ và đảm bảo yêu cầu của bạn tuân thủ quy cách API.
FAILED_PRECONDITION (HTTP 400)
Thao tác này đã 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 thường gặp bao gồm việc cố gắng thay đổi một chuyến đi
COMPLETEhoặcCANCELEDsang một trạng thái khác, hoặc cố gắng giao một nhiệm vụCLOSEDcho một chiếc xe. - 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. Kiểm tra thông báo lỗi để biết các lỗi vi phạm cụ thể theo từng tiểu bang.
UNAVAILABLE (HTTP 503)
Dịch vụ này hiện không hoạt động.
- Nguyên nhân: Lỗi này cho biết dịch vụ Fleet Engine gặp phải một vấn đề tạm thời.
- 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.