Ошибка выполнения IoT Edge 400 после запуска виртуальной машины, которая была отключена более 1 месяца

У меня была рабочая виртуальная машина с IoT Edge 1.0.10.3 на Ubuntu 16.04, которую я отключил в течение последнего месяца или около того.

Включил его сегодня и обнаружил, что:

  • Я могу запустить все модули нормально. Все они сообщают о беге
  • Ответ среды выполнения: 400 -- The deployment configuration is malformed or invalid
  • Выполняя проверку iotedge, ошибок не обнаружено.
  • когда я пытаюсь set modules, в пограничных модулях Интернета вещей: There are no listed IoT Edge Modules
  • также я получаю следующую ошибку в журналах EdgeHub:
<4> 2021-01-19 22:27:12.834 +00:00 [WRN] - Error getting edge hub config from twin desired properties
System.ArgumentException: schemaVersion is null or whitespace.
   at Microsoft.Azure.Devices.Edge.Util.Preconditions.CheckArgument(Boolean expression, String message) in /home/vsts/work/1/s/edge-util/src/Microsoft.Azure.Devices.Edge.Util/Preconditions.cs:line 73
   at Microsoft.Azure.Devices.Edge.Util.Preconditions.CheckNonWhiteSpace(String value, String paramName) in /home/vsts/work/1/s/edge-util/src/Microsoft.Azure.Devices.Edge.Util/Preconditions.cs:line 192
   at Microsoft.Azure.Devices.Edge.Hub.Core.Config.EdgeHubDesiredProperties..ctor(String schemaVersion, IDictionary`2 routes, StoreAndForwardConfiguration storeAndForwardConfiguration) in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/EdgeHubDesiredProperties.cs:line 14
   at lambda_method(Closure , Object[] )
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObjectUsingCreatorWithParameters(JsonReader reader, JsonObjectContract contract, JsonProperty containerProperty, ObjectConstructor`1 creator, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
   at Microsoft.Azure.Devices.Edge.Hub.Core.Config.TwinConfigSource.GetConfigInternal() in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/TwinConfigSource.cs:line 97
   at Microsoft.Azure.Devices.Edge.Hub.Core.Config.TwinConfigSource.GetConfigInternal() in /home/vsts/work/1/s/edge-hub/src/Microsoft.Azure.Devices.Edge.Hub.Core/config/TwinConfigSource.cs:line 105

Что могло случиться за последний месяц пребывания в автономном режиме, что привело бы к нестабильному состоянию?


person Johnny    schedule 19.01.2021    source источник
comment
Привет, VinnyH, не могли бы вы включить желаемые свойства из двойника модуля $ edgeHub? Вы можете найти его на портале Azure. Я спрашиваю, потому что ошибка намекает на отсутствие schemaVersion.   -  person Matthijs van der Veer    schedule 20.01.2021
comment
@MatthijsvanderVeer Вот это: свойства: {желаемый: {маршруты: {}, $ метаданные: {$ lastUpdated: 2020-11-25T18: 26: 39.4780665Z, $ lastUpdatedVersion: 5, маршруты: {$ lastUpdated: 2020-11- 25T15: 03: 42.6671499Z, $ lastUpdatedVersion: 4}}, $ version: 5}, я вижу, что schemaVersion отсутствует в требуемых свойствах, но не знаю, как это произошло, и мысли о том, как решить эту проблему? Спасибо!   -  person Johnny    schedule 21.01.2021


Ответы (1)


Согласно docs, версия $ schemaVersion, на которую ссылаются ваши журналы, была представлена ​​в 1.0.10. В документации говорится, что это свойство рекомендуется, но, похоже, это требуется во время выполнения. В своем комментарии вы включили желаемые свойства, в которых отсутствует $ schemaVersion. Попробуйте установить следующие желаемые свойства:

"properties":{
  "desired":{
     "routes":{},
     "schemaVersion": "1.1",
     "$metadata":{
        "$lastUpdated":"2020-11-25T18:26:39.4780665Z",
        "$lastUpdatedVersion":5,
        "routes":{
           "$lastUpdated":"2020-11-25T15:03:42.6671499Z",
           "$lastUpdatedVersion":4
        }
     }
  }
}
person Matthijs van der Veer    schedule 21.01.2021
comment
Спасибо! Это действительно сработало, но все еще возникает вопрос, как манифест вообще был поврежден. Кроме того, похоже, что я потерял один из модулей, который должен был быть развернут как часть манифеста, и мне придется повторно развернуть его. - person Johnny; 22.01.2021
comment
Виртуальная машина не должна контролировать, какие модули требуются, поэтому кажется, что в хабе что-то изменилось. Рад, что этот ответ помог вам! - person Matthijs van der Veer; 22.01.2021