หากพบปัญหา โปรดดูส่วนต่อไปนี้เพื่อรับความช่วยเหลือ
สถานะสูญหายใน Fleet Engine
เมื่อใช้ Fleet Engine ให้ออกแบบการติดตั้งใช้งานเพื่อคาดการณ์ ความล้มเหลว เช่น หากคุณส่งคำขอไปยัง Fleet Engine เพื่ออัปเดต ยานพาหนะ ระบบอาจตอบกลับด้วยข้อผิดพลาดที่ระบุว่าไม่มี ยานพาหนะดังกล่าว จากนั้นการติดตั้งใช้งานควรสร้างยานพาหนะขึ้นใหม่ในสถานะใหม่
ในกรณีที่ Fleet Engine ล้มเหลวอย่างร้ายแรง ซึ่งเป็นสถานการณ์ที่มักไม่เกิดขึ้นบ่อยนัก คุณอาจต้องสร้างยานพาหนะและงานส่วนใหญ่หรือทั้งหมดขึ้นมาใหม่ หากอัตราการสร้างสูงเกินไป คำขอบางรายการอาจล้มเหลวอีกครั้งเนื่องจากปัญหาโควต้า เนื่องจากมีการตรวจสอบโควต้าเพื่อหลีกเลี่ยงการโจมตีแบบปฏิเสธการให้บริการ (DoS) ในกรณีนี้ ให้ลดอัตราการสร้างใหม่โดยใช้กลยุทธ์ Backoff สำหรับการลองอีกครั้ง
ลองอีกครั้ง
ตรวจสอบว่าระบบของคุณใช้การลองใหม่สำหรับคำขอไปยัง Fleet Engine เนื่องจากคำขออาจล้มเหลวเป็นครั้งคราว ไลบรารีของไคลเอ็นต์ Fleet Engine จะออกการลองใหม่โดยค่าเริ่มต้น
สถานะสูญหายในแอปคนขับ
หากแอปคนขับขัดข้อง แอปต้องสร้างสถานะปัจจุบันขึ้นใหม่ภายใน Driver SDK แอปควรพยายามสร้างงานใหม่เพื่อให้แน่ใจว่ามีอยู่ และเพื่อคืนค่าสถานะปัจจุบันของงาน นอกจากนี้ แอปควรสร้างรายการจุดจอดสำหรับ Driver SDK ขึ้นใหม่และตั้งค่าอย่างชัดเจน
หมายเหตุ: การกู้คืนเหล่านี้ต้องดำเนินการโดยอัตโนมัติโดยไม่ต้องอาศัย ข้อมูลจาก Fleet Engine นอกเหนือจากข้อผิดพลาดที่ระบุว่ามีเอนทิตีอยู่ในฐานข้อมูลหรือไม่และเมื่อใด หากมีเอนทิตีอยู่แล้ว ข้อผิดพลาดนั้นจะถูกละเว้นและอัปเดตเอนทิตีได้โดยใช้รหัสของเอนทิตี
ข้อผิดพลาดเกี่ยวกับกำหนดเวลาที่เกิน
หากได้รับข้อผิดพลาด DEADLINE_EXCEEDED เมื่อเรียกใช้ Fleet Engine แสดงว่าคำขอใช้เวลานานกว่าการหมดเวลาที่กำหนดค่าไว้ ไลบรารีของไคลเอ็นต์ Fleet Engine มี
การหมดเวลาเริ่มต้น แต่คุณอาจต้องปรับค่า
ดูข้อมูลทั่วไปเกี่ยวกับกำหนดเวลา gRPC ได้ที่ gRPC และกำหนดเวลา
หากต้องการกำหนดค่ากำหนดเวลาเมื่อใช้ไลบรารีของไคลเอ็นต์ Java ของ Fleet Engine คุณ
สามารถปรับการตั้งค่าการลอง RPC อีกครั้งได้ ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่า
การหมดเวลาที่กำหนดเองเมื่อตั้งค่า 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());
ข้อผิดพลาด API ที่พบบ่อย
ส่วนนี้แสดงข้อผิดพลาดของ API ที่พบบ่อยซึ่งคุณอาจพบ สาเหตุของข้อผิดพลาด และ วิธีแก้ไข
NOT_FOUND (HTTP 404)
ไม่พบเอนทิตีที่ขอ (เช่น ยานพาหนะ การเดินทาง หรืองาน)
- สาเหตุ: มักเกิดจากการพยายามรับ อัปเดต หรือลบเอนทิตี โดยใช้รหัสที่ไม่มีอยู่ในฐานข้อมูล
- การแก้ไข: ตรวจสอบว่ารหัสเอนทิตีถูกต้องและสร้างเอนทิตี สำเร็จแล้วก่อนที่จะพยายามเข้าถึง
ALREADY_EXISTS (HTTP 409)
มีเอนทิตีที่คุณพยายามสร้างอยู่แล้ว
- สาเหตุ: เกิดจากการเรียกใช้เมธอดสร้าง (เช่น
CreateVehicleหรือCreateTrip) ด้วยรหัสที่มีการใช้งานอยู่แล้ว - การแก้ไข: ให้อัปเดตเอนทิตีที่มีอยู่แทน หรือใช้รหัสใหม่ที่ไม่ซ้ำกันสำหรับคำขอสร้าง
PERMISSION_DENIED (HTTP 403)
คุณไม่มีสิทธิ์ที่จำเป็นในการดำเนินการตามคำขอ
- สาเหตุ: โดยปกติแล้วปัญหานี้จะเกิดขึ้นหาก JSON Web Token (JWT) ไม่มี การอ้างสิทธิ์ที่ถูกต้อง หรือหากบัญชีบริการที่ลงชื่อ JWT ไม่มี บทบาท IAM ที่จำเป็น เช่น "JWT ไม่มีขอบเขตที่ตรงกันสำหรับ การเดินทางที่ขอ"
- การแก้ไข: ตรวจสอบสิทธิ์ของบัญชีบริการและตรวจสอบว่าการอ้างสิทธิ์ JWT มีขอบเขตที่ถูกต้องสำหรับเอนทิตีที่คุณพยายามเข้าถึง
INVALID_ARGUMENT (HTTP 400)
อาร์กิวเมนต์ที่ส่งในคำขออย่างน้อย 1 รายการไม่ถูกต้อง
- สาเหตุ: ปัญหานี้อาจเกิดขึ้นได้จากหลายสาเหตุ เช่น การระบุค่าที่อยู่นอกช่วง (เช่น ความจุสูงสุด) การไม่มีฟิลด์ที่จำเป็น (เช่น
VehicleType) หรือการระบุพิกัดที่ไม่ถูกต้องสำหรับจุดรับสินค้า - การแก้ไข: ตรวจสอบข้อความแสดงข้อผิดพลาดสำหรับฟิลด์ที่เฉพาะเจาะจงซึ่งไม่ถูกต้อง และตรวจสอบว่าคำขอเป็นไปตามข้อกำหนดของ API
FAILED_PRECONDITION (HTTP 400)
การดำเนินการถูกปฏิเสธเนื่องจากระบบไม่ได้อยู่ในสถานะที่จำเป็นสำหรับการ ดำเนินการ
- สาเหตุ: สาเหตุที่พบบ่อย ได้แก่ การพยายามเปลี่ยน
COMPLETEหรือCANCELEDการเดินทางเป็นรัฐอื่น หรือพยายามมอบหมายงานCLOSEDให้ยานพาหนะ - การแก้ไข: ตรวจสอบว่าสถานะปัจจุบันของเอนทิตีอนุญาตให้ดำเนินการที่คุณพยายามทำได้ ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อดูการละเมิดกฎหมายของรัฐที่เฉพาะเจาะจง
UNAVAILABLE (HTTP 503)
บริการไม่พร้อมใช้งาน
- สาเหตุ: ปัญหานี้บ่งบอกถึงปัญหาชั่วคราวเกี่ยวกับบริการ Fleet Engine
- การแก้ไข: คุณลองส่งคำขออีกครั้งได้อย่างปลอดภัยโดยใช้ Exponential Backoff