แก้ไขปัญหาทั่วไป

หากพบปัญหา โปรดดูส่วนต่อไปนี้เพื่อรับความช่วยเหลือ

สถานะสูญหายใน 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