Si tienes algún problema, consulta las siguientes secciones para obtener ayuda.
Estado de pérdida en Fleet Engine
Cuando trabajes con Fleet Engine, diseña tu implementación para anticiparte a las fallas. Por ejemplo, si envías una solicitud a Fleet Engine para actualizar un vehículo, es posible que responda con un error que indique que el vehículo no existe. Luego, tu implementación debería volver a crear el vehículo en el nuevo estado.
En el caso extremadamente improbable de una falla catastrófica de Fleet Engine, es posible que debas volver a crear la mayoría o todos los vehículos y las tareas. Si la tasa de creación aumenta demasiado, es posible que algunas solicitudes vuelvan a fallar debido a problemas de cuota, ya que se realizan verificaciones de cuota para evitar ataques de denegación de servicio (DoS). En este caso, reduce la velocidad de la tasa de recreación con una estrategia de retirada para los reintentos.
Reintentos
Asegúrate de que tu sistema implemente reintentos para las solicitudes a Fleet Engine, ya que es posible que fallen ocasionalmente. Las bibliotecas cliente de Fleet Engine emiten reintentos de forma predeterminada.
Se perdió el estado en la app para conductores
Si la app para conductores falla, debe recrear el estado actual dentro del SDK de Driver. La app debe intentar recrear las tareas para asegurarse de que existan y restablecer sus estados actuales. La app también debe recrear y establecer de forma explícita la lista de paradas para el SDK de Driver.
Nota: Estos restablecimientos deben realizarse de forma autónoma sin depender de la información de Fleet Engine, excepto los errores que indican si una entidad ya existe en la base de datos y cuándo. Si ya existe una entidad, se puede omitir ese error y actualizar la entidad con su ID.
Errores de superación del plazo
Si recibes un error DEADLINE_EXCEEDED cuando llamas a Fleet Engine, significa que la solicitud tardó más que el tiempo de espera configurado. Las bibliotecas cliente de Fleet Engine tienen tiempos de espera predeterminados, pero es posible que debas ajustarlos.
Para obtener información general sobre los plazos de gRPC, consulta gRPC y plazos.
Para configurar el plazo cuando usas la biblioteca cliente de Fleet Engine en Java, puedes ajustar la configuración de reintentos de RPC. En el siguiente ejemplo, se muestra cómo configurar un tiempo de espera personalizado cuando se configura el objeto 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());
Errores comunes de la API
En esta sección, se enumeran los errores comunes de la API que puedes encontrar, sus causas y cómo resolverlos.
NOT_FOUND (HTTP 404)
No se pudo encontrar la entidad solicitada (como un vehículo, un viaje o una tarea).
- Causa: Por lo general, se debe a un intento de obtener, actualizar o borrar una entidad con un ID que no existe en la base de datos.
- Corrección: Verifica que el ID de la entidad sea correcto y que la entidad se haya creado correctamente antes de intentar acceder a ella.
ALREADY_EXISTS (HTTP 409)
La entidad que intentas crear ya existe.
- Causa: Se produce por llamar a un método de creación (como
CreateVehicleoCreateTrip) con un ID que ya está en uso. - Corrección: Actualiza la entidad existente o usa un nuevo ID único para la solicitud de creación.
PERMISSION_DENIED (HTTP 403)
No tienes los permisos necesarios para completar la solicitud.
- Causa: Por lo general, esto ocurre si a tu token web JSON (JWT) le faltan los reclamos correctos o si a la cuenta de servicio que firma el JWT le faltan los roles de IAM requeridos. Por ejemplo, "El JWT no contiene un permiso coincidente para el viaje solicitado".
- Solución: Verifica los permisos de tu cuenta de servicio y asegúrate de que tus reclamos de JWT incluyan los alcances correctos para la entidad a la que intentas acceder.
INVALID_ARGUMENT (HTTP 400)
Uno o más de los argumentos que se pasaron en la solicitud no son válidos.
- Causa: Esto puede suceder por varios motivos, como proporcionar un valor fuera del rango (p.ej., capacidad máxima), omitir un campo obligatorio (p.ej., un
VehicleType) o proporcionar coordenadas no válidas para un punto de retiro. - Corrección: Revisa el mensaje de error del campo específico que no es válido y asegúrate de que tu solicitud cumpla con la especificación de la API.
FAILED_PRECONDITION (HTTP 400)
La operación se rechazó porque el sistema no se encuentra en un estado necesario para la ejecución de la operación.
- Causa: Las causas comunes incluyen intentar cambiar un viaje de
COMPLETEoCANCELEDa un estado diferente, o intentar asignar una tarea deCLOSEDa un vehículo. - Solución: Asegúrate de que el estado actual de la entidad permita la operación que intentas realizar. Revisa el mensaje de error para ver los incumplimientos específicos del estado.
UNAVAILABLE (HTTP 503)
El servicio no está disponible.
- Causa: Esto indica un problema transitorio con el servicio de Fleet Engine.
- Corrección: La solicitud se puede reintentar de forma segura con una retirada exponencial.