โปรดดูส่วนต่อไปนี้เพื่อรับความช่วยเหลือหากพบปัญหา
สถานะสูญหายใน 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 และกำหนดเวลา
หากต้องการกำหนดค่ากำหนดเวลาเมื่อใช้ไลบรารีของไคลเอ็นต์ Fleet Engine Java คุณสามารถปรับการตั้งค่าการลองใหม่ของ 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)
มีเอนทิตีที่คุณพยายามสร้างอยู่แล้ว
- สาเหตุ: เกิดจากการเรียกใช้เมธอด create (เช่น
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