Consulta las siguientes secciones para obtener ayuda si tienes algún problema.
Estado de pérdida en Fleet Engine
Cuando trabajes con Fleet Engine, diseña tu implementación para anticipar fallas. Por ejemplo, si emites 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 estado nuevo.
En el caso extremadamente improbable de una falla catastrófica de Fleet Engine, es posible que debas volver a crear la mayoría o la totalidad de los vehículos y las tareas. Si la tasa de creación es demasiado alta, 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, disminuye 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 pueden fallar ocasionalmente. Las bibliotecas cliente de Fleet Engine emiten reintentos de forma predeterminada.
Estado de pérdida en la app para conductores
Si la app para conductores falla, debe volver a crear el estado actual en el SDK de Driver. La app debería intentar volver a crear las tareas para asegurarse de 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 para el SDK de Driver.
Nota: Estos restablecimientos se deben realizar 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, ese error se puede absorber y la entidad se puede actualizar con su ID.
Errores de plazo excedido
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 usas la biblioteca cliente de Java de Fleet Engine, 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 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 podrías 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 produce cuando se intenta obtener, actualizar o borrar una entidad con un ID que no existe en la base de datos.
- Solució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 cuando se llama a un método de creación (como
CreateVehicleoCreateTrip) con un ID que ya está en uso. - Solución: Actualiza la entidad existente o usa un ID único nuevo 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 las reclamaciones correctas o si a la cuenta de servicio que firma el JWT le faltan los roles de IAM necesarios. 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 permisos correctos para la entidad a la que intentas acceder.
INVALID_ARGUMENT (HTTP 400)
Uno o más de los argumentos pasados en la solicitud no son válidos.
- Causa: Esto puede suceder por varios motivos, como proporcionar un valor fuera de rango (p.ej., capacidad máxima), omitir un campo obligatorio (p.ej., un
VehicleType) o proporcionar coordenadas no válidas para un punto de partida. - Solució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ó debido a que 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
COMPLETEoCANCELEDa un estado diferente, o intentar asignar una tareaCLOSEDa un vehículo. - Solución: Asegúrate de que el estado actual de la entidad permita la operación que intentas realizar. Verifica el mensaje de error para conocer los incumplimientos de estado específicos.
UNAVAILABLE (HTTP 503)
El servicio no está disponible.
- Causa: Esto indica un problema transitorio con el servicio de Fleet Engine.
- Solución: La solicitud se puede volver a intentar de forma segura con una retirada exponencial.