项目

一般

简介

错误 #4990

网管版本2.4.1版本,先升级基站软件版本,再升级OS版本,出现OS版本上传版本问题锁

杨 凯大约 2 个月 之前添加. 更新于 28 天 之前.

状态:
已解决
优先级:
一般
指派给:
开始日期:
2026-03-09
计划完成日期:
% 完成:

0%

预期时间:

描述

网管版本2.4.1版本,先升级基站软件版本,再升级OS版本,出现OS版本上传版本提示“当前已有任务进行中”
备注:
无法上传OS版本


文件

历史记录

#1

马 自伟 更新于 大约 2 个月 之前

  • 状态新建 变更为 进行中

问题定位:
1.先升级基站软件版本,那么redis有key:“software-version-manage:ip”会有记录,记录内容为:filed:gnb,value:{"startTime":1773038405,"timeOut":1773039005,"result":"success","status":"end","message":"","code":0}
其中,value属于json

2.升级OS时,redis使用的key依然是“software-version-manage:ip”,进行复用key,但是记录的内容,filed:status,value:end
这样的使用时,时hash方式

3.在升级OS之前,会有前置检查,目前的逻辑只记录了filed:status,value:end的方式,没有考虑到json为value的方式,导致查询status为空,无法判断是“end”,因此返回了“当前已有任务正在进行中”的错误

问题解决:
在升级OS之前的前置检查,对redis的key为“software-version-manage:ip”做出考虑json的情况

修改为:
if ($redis->keyExists($key)) {
$res = $redis->hGetAll($key);
$status = '';

// 第一种结构
if (isset($res['status'])) {
$status = $res['status'];
}
// 第二种结构
if (!$status && isset($res['gnb'])) {
$gnbInfo = json_decode($res['gnb'], true);
$status = $gnbInfo['status'] ?? '';
}
if ($status === 'end') {
$redis->del($key);
} else {
return $this->return_json([], 1, $this>stringDefine['PROMPT_MSG_83']);
}
}
#2

马 自伟 更新于 大约 2 个月 之前

  • 状态进行中 变更为 反馈
  • 指派给马 自伟 变更为 马 党旗
#3

马 党旗 更新于 大约 2 个月 之前

  • 状态反馈 变更为 审视
#4

马 党旗 更新于 大约 2 个月 之前

  • 状态审视 变更为 转测试
#5

马 党旗 更新于 大约 2 个月 之前

  • 指派给马 党旗 变更为 杨 凯
#6

杨 凯 更新于 大约 2 个月 之前

升级完OS,再升级基站软件包提示报错“操作失败”

#7

马 自伟 更新于 大约一个月 之前

  • 指派给马 自伟 变更为 马 党旗

问题定位:
只考虑了升级基站软件,再升级os,处理了相关的key
但是,先升级os,在升级基站软件的key处理,未考虑到

问题解决:
backend中,CheckPackageVersonOperation检测当前版本是否还有其他任务函数中,处理redis的key逻辑,增加了对os的扁平map的处理,兼容了json数据的处理函数ParseRedisSoftwareVersionManage

#8

马 党旗 更新于 大约一个月 之前

  • 状态反馈 变更为 审视
#9

马 党旗 更新于 大约一个月 之前

  • 状态审视 变更为 转测试
  • 指派给马 党旗 变更为 杨 凯
#10

杨 凯 更新于 28 天 之前

  • 状态转测试 变更为 已解决

YZMM2.4.1Pre2T1已解决

导出 Atom PDF