微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

启动关闭超过 1 个月的虚拟机后,IoT Edge 运行时错误 400

如何解决启动关闭超过 1 个月的虚拟机后,IoT Edge 运行时错误 400

我有一个在 Ubuntu 16.04 上运行 IoT Edge 1.0.10.3 的工作虚拟机,我在过去一个月左右关闭了它。

今天打开它发现:

  • 我可以正常启动所有模块。他们都报告正在运行
  • 运行时响应为:400 -- The deployment configuration is malformed or invalid
  • 运行 iotedge 检查,似乎没有任何错误
  • 当我尝试 set modules 时,在 IoT 边缘模块下: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,String id,Boolean& createdFromNonDefaultCreator)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader,Type objectType,JsonContract contract,JsonProperty member,JsonContainerContract containerContract,Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader,Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,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

在过去一个月的离线状态下会发生什么使边缘进入不一致状态?

解决方法

根据 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
        }
     }
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。