Skip to content

Commit 97b16e4

Browse files
committed
fix(layer): optimize timeout message
1 parent 7d19a8a commit 97b16e4

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

__tests__/layer.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ describe('Layer', () => {
1313
name: 'layer-test',
1414
bucket: process.env.BUCKET,
1515
object: 'node_modules.zip',
16-
description: 'Layer created by Serverless Component',
16+
description: 'Created by Serverless Component',
1717
runtimes: ['Nodejs10.15', 'Nodejs12.16'],
1818
};
1919

src/modules/layer/index.js

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const { Capi } = require('@tencent-sdk/capi');
22
const { waitResponse } = require('@ygkit/request');
33
const capis = require('./apis/apis');
44
const apis = require('./apis');
5+
const { ApiError } = require('../../utils/error');
56

67
// timeout 2 minutes
78
const TIMEOUT = 2 * 60 * 1000;
@@ -57,23 +58,42 @@ class Layer {
5758
console.log(`Creating layer ${inputs.name}`);
5859
const version = await apis.publishLayer(this.capi, layerInputs);
5960
// loop for active status
60-
await waitResponse({
61-
callback: async () => this.getLayerDetail(inputs.name, version),
62-
targetProp: 'Status',
63-
targetResponse: 'Active',
64-
timeout: TIMEOUT,
65-
});
66-
console.log(`Created layer: ${inputs.name}, version: ${version} successful`);
61+
try {
62+
await waitResponse({
63+
callback: async () => this.getLayerDetail(inputs.name, version),
64+
targetProp: 'Status',
65+
targetResponse: 'Active',
66+
timeout: TIMEOUT,
67+
});
68+
} catch (e) {
69+
const detail = await this.getLayerDetail(inputs.name, version);
70+
if (detail) {
71+
// if not active throw error
72+
if (detail.Status !== 'Active') {
73+
throw new ApiError({
74+
type: 'API_LAYER_GetLayerVersion',
75+
message: `Cannot create layer success in 2 minutes, status: ${detail.Status}(reqId: ${detail.RequestId})`,
76+
});
77+
}
78+
} else {
79+
// if can not get detail throw error
80+
throw new ApiError({
81+
type: 'API_LAYER_GetLayerVersion',
82+
message: `Cannot create layer success in 2 minutes`,
83+
});
84+
}
85+
}
86+
console.log(`Created layer: ${inputs.name}, version: ${version} success`);
6787
outputs.version = version;
6888

6989
return outputs;
7090
}
7191

7292
async remove(inputs = {}) {
7393
try {
74-
console.log(`Start removing layer: ${inputs.name}, version: ${inputs.version}...`);
94+
console.log(`Start removing layer: ${inputs.name}, version: ${inputs.version}`);
7595
await apis.deleteLayerVersion(this.capi, inputs.name, inputs.version);
76-
console.log(`Remove layer: ${inputs.name}, version: ${inputs.version} successfully`);
96+
console.log(`Remove layer: ${inputs.name}, version: ${inputs.version} success`);
7797
} catch (e) {
7898
console.log(e);
7999
}

0 commit comments

Comments
 (0)