Если у вас возникнут какие-либо проблемы, обратитесь за помощью в следующие разделы.
Потерянное состояние в Fleet Engine
При работе с Fleet Engine проектируйте свою реализацию с учетом возможных сбоев. Например, если вы отправляете запрос в Fleet Engine на обновление транспортного средства, система может ответить ошибкой, указывающей на то, что транспортное средство не существует. В этом случае ваша реализация должна создать транспортное средство заново в новом состоянии.
В крайне маловероятном сценарии катастрофического сбоя Fleet Engine вам может потребоваться пересоздать большинство или все транспортные средства и задачи. Если скорость создания станет слишком высокой, некоторые запросы могут снова завершиться неудачей из-за проблем с квотами, поскольку проверки квот предусмотрены для предотвращения атак типа «отказ в обслуживании» (DOS). В этом случае замедлите скорость создания, используя стратегию отсрочки повторных попыток.
Повторные попытки
Убедитесь, что ваша система поддерживает повторные попытки отправки запросов к Fleet Engine, поскольку они могут иногда завершаться неудачей. Клиентские библиотеки Fleet Engine по умолчанию запускают повторные попытки.
Состояние "потеряно" в приложении для водителей.
Если приложение для водителя аварийно завершает работу, оно должно восстановить текущее состояние в рамках Driver SDK. Приложение должно попытаться воссоздать задачи, чтобы убедиться в их существовании и восстановить их текущее состояние. Приложение также должно воссоздать и явно установить список остановок для Driver SDK.
Примечание : Эти операции восстановления должны выполняться автономно, без использования информации из Fleet Engine, за исключением ошибок, указывающих на то, существует ли уже объект в базе данных и когда это происходит. Если объект уже существует, то эта ошибка может быть обработана, и объект может быть обновлен с использованием его идентификатора.
ошибки, связанные с превышением сроков
Если при вызове Fleet Engine возникает ошибка DEADLINE_EXCEEDED , это означает, что запрос выполнился дольше, чем заданное время ожидания. Клиентские библиотеки 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)
Создаваемый вами объект уже существует.
- Причина : Вызвано вызовом метода создания (например,
CreateVehicleилиCreateTrip) с идентификатором, который уже используется. - Решение : Либо обновите существующую сущность, либо используйте новый уникальный идентификатор для запроса на создание.
PERMISSION_DENIED (HTTP 403)
У вас нет необходимых прав для выполнения запроса.
- Причина : Обычно это происходит, если в вашем JSON Web Token (JWT) отсутствуют необходимые утверждения или если у учетной записи службы, подписывающей JWT, отсутствуют требуемые роли IAM. Например, "JWT не содержит соответствующей области действия для запрошенной поездки".
- Решение проблемы : Проверьте права доступа вашей учетной записи службы и убедитесь, что ваши утверждения JWT содержат правильные области действия для сущности, к которой вы пытаетесь получить доступ.
INVALID_ARGUMENT (HTTP 400)
Один или несколько аргументов, переданных в запросе, являются недействительными.
- Причина : Это может произойти по разным причинам, например, из-за указания значения, выходящего за пределы допустимого диапазона (например, максимальной вместимости), отсутствия обязательного поля (например,
VehicleType) или указания недопустимых координат для пункта погрузки. - Исправление : Просмотрите сообщение об ошибке для конкретного недействительного поля и убедитесь, что ваш запрос соответствует спецификации API.
FAILED_PRECONDITION (HTTP 400)
Операция была отклонена, поскольку система не находится в состоянии, необходимом для ее выполнения.
- Причина : К распространенным причинам относятся попытка изменить статус поездки
COMPLETEилиCANCELEDна другой штат, а также попытка назначить транспортному средству задачуCLOSED. - Исправление : Убедитесь, что текущее состояние объекта позволяет выполнить пытающуюся операцию. Проверьте сообщение об ошибке на наличие конкретных нарушений состояния.
UNAVAILABLE (HTTP 503)
Данная услуга недоступна.
- Причина : Это указывает на временную проблему в работе службы Fleet Engine.
- Исправление : Запрос можно безопасно повторить с экспоненциальной задержкой.