Commit 73f8d7d6c2d009bbd2fd7a85ec171a1e09eebf30

Authored by Adhidarma Hadiwinoto
1 parent a8e02b8e19
Exists in master

Optimasi retry send

Showing 1 changed file with 31 additions and 17 deletions Side-by-side Diff

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