liuxiulin 7 tháng trước cách đây
mục cha
commit
6336908dfb
1 tập tin đã thay đổi với 5 bổ sung5 xóa
  1. 5 5
      services/emqx-agent/agent.go

+ 5 - 5
services/emqx-agent/agent.go

@@ -199,6 +199,7 @@ func (a *Access) processDeviceUpgrade(deviceId string, message *gjson.Json) erro
 		err := a.chunkUpgrade(*args)
 		if err != nil {
 			server.Log.Errorf("分片下载发送失败:%v", err)
+			return err
 		}
 
 	case "downProgress":
@@ -216,10 +217,11 @@ func (a *Access) processDeviceUpgrade(deviceId string, message *gjson.Json) erro
 	case "finish":
 		device := a.GetLockDevice(deviceId)
 		device.Mutex.Lock()
+		defer device.Mutex.Unlock()
 		if device != nil {
 			device.Locked = false
 		}
-		device.Mutex.Unlock()
+
 		server.Log.Infof("OTA升级完成;%s", deviceId)
 	}
 
@@ -283,11 +285,10 @@ func (a *Access) SendCommand(args rpcs.ArgsSendCommand, reply *rpcs.ReplySendCom
 	// 查询设备信息
 	lockDevice := a.GetLockDevice(args.DeviceId)
 	lockDevice.Mutex.Lock()
-
+	defer lockDevice.Mutex.Unlock()
 	if lockDevice.Locked {
 		return errors.New("设备正在进行OTA升级,请稍后重试")
 	}
-	lockDevice.Mutex.Unlock()
 
 	device := &models.Device{}
 	err := server.RPCCallByName(nil, rpcs.RegistryServerName, "Registry.FindDeviceByIdentifier", args.DeviceId, device)
@@ -336,10 +337,9 @@ func (a *Access) GetStatus(args rpcs.ArgsGetStatus, reply *rpcs.ReplyGetStatus)
 func (a *Access) chunkUpgrade(params rpcs.ChunkUpgrade) error {
 	lockDevice := a.GetLockDevice(params.DeviceId)
 	lockDevice.Mutex.Lock()
-
+	defer lockDevice.Mutex.Unlock()
 	lockDevice.Locked = true
 	lockDevice.LastSeen = time.Now()
-	lockDevice.Mutex.Unlock()
 
 	server.Log.Infof("4G模组OTA升级:%s", params.DeviceId)