Skip to content

Commit 00ac8aa

Browse files
committed
Fix for validatorVersion it was appending a 1 to max_version to due to string convers error
1 parent 2942bf9 commit 00ac8aa

File tree

3 files changed

+66
-59
lines changed

3 files changed

+66
-59
lines changed

src/core/services/client-manager.ts

+60-50
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import * as common from '../utils/common'
55
import constConfig from '../constants';
66
import { getRedisClient } from '../utils/redis'
77
import { AppError } from '../app-error'
8-
import * as config from '../config'
8+
import config from '../config'
99
import log4js from 'log4js'
1010
import Sequelize from 'sequelize'
1111

@@ -37,35 +37,28 @@ export const clearUpdateCheckCache = async function (deploymentKey: string, appV
3737
}
3838

3939
export const updateCheckFromCache = async function (deploymentKey: string, appVersion: string, label: string, packageHash: string, clientUniqueId: number) {
40-
var updateCheckCache = _.get(config, 'common.updateCheckCache', false);
41-
if (updateCheckCache === false) {
40+
const updateCheckCache = config.common.updateCheckCache
41+
if (!updateCheckCache) {
4242
return updateCheck(deploymentKey, appVersion, label, packageHash);
4343
}
44-
let redisCacheKey = getUpdateCheckCacheKey(deploymentKey, appVersion, label, packageHash);
44+
const redisCacheKey = getUpdateCheckCacheKey(deploymentKey, appVersion, label, packageHash);
4545
const client = await getRedisClient()
46+
try {
47+
const data = await client.get(redisCacheKey)
48+
log.debug('updateCheckFromCache read from cache');
49+
if (data) {
50+
const obj = JSON.parse(data);
51+
return obj as UpdateCheckResponse
52+
}
4653

47-
return client.get(redisCacheKey)
48-
.then((data) => {
49-
if (data) {
50-
try {
51-
log.debug('updateCheckFromCache read from catch');
52-
var obj = JSON.parse(data);
53-
return obj;
54-
} catch (e) {
55-
}
56-
}
57-
return updateCheck(deploymentKey, appVersion, label, packageHash, clientUniqueId)
58-
.then((rs) => {
59-
try {
60-
log.debug('updateCheckFromCache read from db');
61-
var strRs = JSON.stringify(rs);
62-
client.setEx(redisCacheKey, EXPIRED, strRs);
63-
} catch (e) {
64-
}
65-
return rs;
66-
});
67-
})
68-
.finally(() => client.quit());
54+
const rs = await updateCheck(deploymentKey, appVersion, label, packageHash, clientUniqueId)
55+
log.debug('updateCheckFromCache read from db');
56+
const strRs = JSON.stringify(rs);
57+
client.setEx(redisCacheKey, EXPIRED, strRs);
58+
return rs
59+
} finally {
60+
client.quit()
61+
}
6962
}
7063

7164
export const getChosenManCacheKey = function (packageId: number, rollout: number, clientUniqueId: number) {
@@ -85,41 +78,57 @@ export const chosenMan = async function (packageId: number, rollout: number, cli
8578
if (rollout >= 100) {
8679
return Promise.resolve(true);
8780
}
88-
var rolloutClientUniqueIdCache = _.get(config, 'common.rolloutClientUniqueIdCache', false);
89-
if (rolloutClientUniqueIdCache === false) {
81+
const rolloutClientUniqueIdCache = config.common.rolloutClientUniqueIdCache
82+
if (!rolloutClientUniqueIdCache) {
9083
return random(rollout);
9184
} else {
9285
const client = await getRedisClient()
9386
const redisCacheKey = getChosenManCacheKey(packageId, rollout, clientUniqueId);
94-
return client.get(redisCacheKey)
95-
.then((data) => {
96-
if (Number(data) == 1) {
97-
return true;
98-
} else if (Number(data) == 2) {
99-
return false;
100-
} else {
101-
return random(rollout)
102-
.then((r) => {
103-
return client.setEx(redisCacheKey as any, 60 * 60 * 24 * 7, r ? '1' : '2')
104-
.then(() => {
105-
return r;
106-
});
107-
});
108-
}
109-
})
110-
.finally(() => client.quit());
87+
88+
try {
89+
const data = await client.get(redisCacheKey)
90+
91+
if (Number(data) == 1) {
92+
return true;
93+
} else if (Number(data) == 2) {
94+
return false;
95+
} else {
96+
const r = await random(rollout)
97+
await client.setEx(redisCacheKey, 60 * 60 * 24 * 7, r ? '1' : '2')
98+
return r;
99+
}
100+
101+
} catch (error) {
102+
client.quit()
103+
}
104+
return
111105
}
112106
}
113107

114-
export const updateCheck = function (deploymentKey: string, appVersion: string, label: string, packageHash: string, clientUniqueId?: number) {
108+
type UpdateCheckResponse = {
109+
packageId: number;
110+
downloadURL: string;
111+
downloadUrl: string;
112+
description: string;
113+
isAvailable: boolean;
114+
isMandatory: boolean;
115+
appVersion: string;
116+
packageHash: string;
117+
label: string;
118+
packageSize: number;
119+
updateAppVersion: boolean;
120+
shouldRunBinaryVersion: boolean;
121+
rollout: number;
122+
}
123+
export const updateCheck = (deploymentKey: string, appVersion: string, label: string, packageHash: string, clientUniqueId?: number): Promise<UpdateCheckResponse> => {
115124
var rs = {
116125
packageId: 0,
117126
downloadURL: "",
118127
downloadUrl: "",
119128
description: "",
120129
isAvailable: false,
121130
isMandatory: false,
122-
appVersion: appVersion,
131+
appVersion,
123132
packageHash: "",
124133
label: "",
125134
packageSize: 0,
@@ -133,13 +142,14 @@ export const updateCheck = function (deploymentKey: string, appVersion: string,
133142
}
134143
return models.Deployments.findOne({ where: { deployment_key: deploymentKey } })
135144
.then((dep) => {
136-
if (_.isEmpty(dep)) {
145+
if (!dep) {
137146
throw new AppError('Not found deployment, check deployment key is right.');
138147
}
139-
var version = common.parseVersion(appVersion);
148+
const version = common.parseVersion(appVersion);
149+
console.log('🚀 ~ file: client-manager.ts ~ line 149 ~ .then ~ version', version)
140150
return models.DeploymentsVersions.findAll({
141151
where: {
142-
deployment_id: dep?.id,
152+
deployment_id: dep.id,
143153
min_version: { [Sequelize.Op.lte]: version },
144154
max_version: { [Sequelize.Op.gt]: version }
145155
}

src/core/utils/common.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,17 @@ export const validatorVersion = function (versionNo: string) {
6363
// "1.2.3"
6464
flag = true;
6565
min = data[1] + _.padStart(data[2], 5, '0') + _.padStart(data[3], 10, '0');
66-
max = data[1] + _.padStart(data[2], 5, '0') + _.padStart((String(data[3]) + 1), 10, '0');
66+
max = data[1] + _.padStart(data[2], 5, '0') + _.padStart(String(parseInt(data[3]) + 1), 10, '0');
6767
} else if (data = versionNo.match(/^([0-9]{1,3}).([0-9]{1,5})(\.\*){0,1}$/)) {
6868
// "1.2" "1.2.*"
6969
flag = true;
7070
min = data[1] + _.padStart(data[2], 5, '0') + _.padStart('0', 10, '0');
71-
max = data[1] + _.padStart((String(data[2]) + 1), 5, '0') + _.padStart('0', 10, '0');
71+
max = data[1] + _.padStart(String(parseInt(data[2]) + 1), 5, '0') + _.padStart('0', 10, '0');
7272
} else if (data = versionNo.match(/^\~([0-9]{1,3}).([0-9]{1,5}).([0-9]{1,10})$/)) {
7373
//"~1.2.3"
7474
flag = true;
7575
min = data[1] + _.padStart(data[2], 5, '0') + _.padStart(data[3], 10, '0');
76-
max = data[1] + _.padStart((String(data[2]) + 1), 5, '0') + _.padStart('0', 10, '0');
76+
max = data[1] + _.padStart(String(parseInt(data[2]) + 1), 5, '0') + _.padStart('0', 10, '0');
7777
} else if (data = versionNo.match(/^\^([0-9]{1,3}).([0-9]{1,5}).([0-9]{1,10})$/)) {
7878
//"^1.2.3"
7979
flag = true;
@@ -83,16 +83,14 @@ export const validatorVersion = function (versionNo: string) {
8383
// "1.2.3 - 1.2.7"
8484
flag = true;
8585
min = data[1] + _.padStart(data[2], 5, '0') + _.padStart(data[3], 10, '0');
86-
max = data[4] + _.padStart(data[5], 5, '0') + _.padStart((String(data[6]) + 1), 10, '0');
86+
max = data[4] + _.padStart(data[5], 5, '0') + _.padStart(String(parseInt(data[6]) + 1), 10, '0');
8787
} else if (data = versionNo.match(/^>=([0-9]{1,3}).([0-9]{1,5}).([0-9]{1,10})\s?<([0-9]{1,3}).([0-9]{1,5}).([0-9]{1,10})$/)) {
8888
// ">=1.2.3 <1.2.7"
8989
flag = true;
9090
min = data[1] + _.padStart(data[2], 5, '0') + _.padStart(data[3], 10, '0');
9191
max = data[4] + _.padStart(data[5], 5, '0') + _.padStart(data[6], 10, '0');
9292
}
9393
return { flag, min, max };
94-
95-
//return [flag, min, max]; Mayer changed it from this
9694
};
9795

9896
export const createFileFromRequest = function (url: string, filePath: string) {

src/routes/index.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import _ from 'lodash'
66
import log4js from 'log4js'
77
import validationRouter from '~/core/router'
88
import * as t from '~/core/utils/iots'
9+
import { omit } from "ramda";
910

1011
const log = log4js.getLogger("cps:index");
1112
const router = validationRouter()
@@ -25,9 +26,7 @@ router.get('/updateCheck', async (req, res, next) => {
2526
rs.isAvailable = false;
2627
}
2728

28-
delete rs.packageId;
29-
delete rs.rollout;
30-
res.send({ "updateInfo": rs });
29+
res.send({ "updateInfo": omit(['packageId', 'rollout'], rs) });
3130
} catch (e) {
3231
if (e instanceof AppError) {
3332
res.status(404).send(e.message);

0 commit comments

Comments
 (0)