Skip to content

Commit a4df047

Browse files
committed
Add validation retries to Lightning provider, triple cache age
1 parent 3b4d0ac commit a4df047

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

libs/cloud-providers/LightningCloudProvider.js

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module.exports = class LightningCloudProvider extends AbstractCloudProvider{
2525
constructor(){
2626
super();
2727

28-
this.validateCache = new ValueCache({expires: 5 * 60 * 1000});
28+
this.validateCache = new ValueCache({expires: 15 * 60 * 1000});
2929

3030
this.urlBase = "https://webodm.net/r";
3131
this.timeout = 15000;
@@ -40,23 +40,28 @@ module.exports = class LightningCloudProvider extends AbstractCloudProvider{
4040
const cached = this.validateCache.get(token);
4141
if (cached !== undefined) return cached;
4242

43-
try{
44-
let response = await axios.post(this.urlFor('/tokens/validate'), { token }, { timeout: this.timeout });
45-
if (response.status === 200){
46-
let result = this.validateCache.set(token, response.data);
47-
return result;
48-
}else{
49-
logger.warn(`Cannot validate token ${token}, returned status ${response.status}`);
50-
return {
51-
valid: false
52-
};
43+
const MAX_RETRIES = 10;
44+
for (let i = 1; i <= MAX_RETRIES; i++){
45+
try{
46+
let response = await axios.post(this.urlFor('/tokens/validate'), { token }, { timeout: this.timeout });
47+
if (response.status === 200){
48+
let result = this.validateCache.set(token, response.data);
49+
return result;
50+
}else{
51+
logger.warn(`Cannot validate token ${token}, returned status ${response.status}, retrying... (${i})`);
52+
}
53+
}catch(e){
54+
logger.warn(`Cannot validate token ${token}: ${e.message} retrying... ${i}`);
5355
}
54-
}catch(e){
55-
logger.warn(`Cannot validate token ${token}: ${e.message}`);
56-
return {
57-
valid: false
58-
};
56+
57+
await utils.sleep(2000 * i);
5958
}
59+
60+
logger.warn(`Cannot validate token ${token}: gave up`);
61+
62+
return {
63+
valid: false
64+
};
6065
}
6166

6267
async approveNewTask(token, imagesCount){

0 commit comments

Comments
 (0)