Si tienes problemas, 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 anticipar 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 debe recrear 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 de los vehículos y las tareas, o todos ellos. 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 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 volver a crear el estado actual dentro del SDK de Driver. La app debe intentar recrear las tareas para garantizar que existan y restablecer sus estados actuales. La app también debe volver a crear y establecer de forma explícita la lista de paradas del SDK de Driver.
Nota: Estas restauraciones 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, 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 se usa 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 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 encontró 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 debe a que se llamó 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 reclamaciones 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 ocurrir 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. - Solución: Revisa el mensaje de error para el 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: Entre las causas comunes, se incluyen intentar cambiar un viaje de
COMPLETEoCANCELEDa un estado diferente, o intentar asignar una tarea deCLOSEDa un vehículo. - Corrección: Asegúrate de que el estado actual de la entidad permita la operación que intentas realizar. Verifica el mensaje de error para detectar 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.