Commit 73f8d7d6c2d009bbd2fd7a85ec171a1e09eebf30
1 parent
a8e02b8e19
Exists in
master
Optimasi retry send
Showing 1 changed file with 31 additions and 17 deletions Side-by-side Diff
transport.js
1 | -"use strict"; | |
2 | - | |
3 | 1 | process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; |
4 | 2 | |
5 | 3 | const module_name = require('path').basename(__filename); |
... | ... | @@ -13,6 +11,17 @@ const logger = require('komodo-sdk/logger'); |
13 | 11 | |
14 | 12 | let _callback; |
15 | 13 | |
14 | +const maxSendRetry = Number(config.max_send_retry) || 5; | |
15 | +const sleepBeforeRetryMs = (Number(config.sleep_before_retry_secs) || 60) * 1000; | |
16 | + | |
17 | +function sleep(ms) { | |
18 | + new Promise((resolve) => { | |
19 | + setTimeout(() => { | |
20 | + resolve(null); | |
21 | + }, ms) | |
22 | + }); | |
23 | +}; | |
24 | + | |
16 | 25 | function createHttpServer() { |
17 | 26 | let listenPort = config.center_port; |
18 | 27 | |
... | ... | @@ -97,23 +106,23 @@ function init(cb) { |
97 | 106 | createHttpServer(); |
98 | 107 | } |
99 | 108 | |
100 | -function _sleepAndResend(partner, msg, params, retry) { | |
101 | - if (retry === null || retry === undefined) { | |
102 | - retry = Number(config.max_send_retry) || 5; | |
109 | +async function sleepAndResend(partner, msg, params, retry) { | |
110 | + if ((retry || 0) > maxSendRetry) { | |
111 | + logger.verbose('Retry exceeded', { | |
112 | + params, | |
113 | + retry: retry || 0, | |
114 | + }); | |
115 | + return; | |
103 | 116 | } |
104 | 117 | |
105 | - if (retry-- > 0) { | |
106 | - setTimeout( | |
107 | - function() { | |
108 | - send(partner, msg, params, retry); | |
109 | - }, | |
110 | - (Number(config.sleep_before_retry_secs) || 60) * 1000 | |
111 | - ) | |
112 | - } | |
118 | + await sleep(sleepBeforeRetryMs); | |
119 | + send(partner, msg, params, retry + 1); | |
113 | 120 | } |
114 | 121 | |
115 | 122 | function send(partner, msg, params, retry) { |
116 | - logger.verbose('Got response from CORE', {partner: partner, msg: msg, params: params, retry: retry}); | |
123 | + logger.verbose('Got response from CORE', { | |
124 | + partner: partner, msg: msg, params: params, retry: retry || 0, | |
125 | + }); | |
117 | 126 | |
118 | 127 | if (!params || !params.reverse_url) { |
119 | 128 | logger.verbose('Undefined reverse_url, not forwarding message to partner'); |
... | ... | @@ -139,17 +148,22 @@ function send(partner, msg, params, retry) { |
139 | 148 | request(reqOptions, function(err, res, body) { |
140 | 149 | if (err) { |
141 | 150 | logger.warn('Error sending reverse report to partner', {request: reqOptions, err: err}); |
142 | - _sleepAndResend(partner, msg, params, retry); | |
151 | + sleepAndResend(partner, msg, params, retry); | |
143 | 152 | return; |
144 | 153 | } |
145 | 154 | |
155 | + /* | |
146 | 156 | if (res.statusCode != 200) { |
147 | - logger.warn('Partner not returning HTTP status code 200 on reverse report', {request: reqOptions, http_status: res.statusCode}); | |
157 | + logger.warn('Partner not returning HTTP status code 200 on reverse report', { | |
158 | + request: reqOptions, http_status: res.statusCode, | |
159 | + }); | |
160 | + | |
148 | 161 | _sleepAndResend(partner, msg, params, retry); |
149 | 162 | return; |
150 | 163 | } |
164 | + */ | |
151 | 165 | |
152 | - logger.verbose('Reverse report has been sent to partner', {request: reqOptions}); | |
166 | + logger.verbose('Reverse report has been sent to partner', { request: reqOptions, httpStatus: res && res.statusCode }); | |
153 | 167 | }) |
154 | 168 | } |
155 | 169 |