Commit 20b54782ebba581bdebfa45825798fec563e6671

Authored by Adhidarma Hadiwinoto
1 parent 64f2f233f9
Exists in master

retry if pending

Showing 2 changed files with 20 additions and 0 deletions Side-by-side Diff

... ... @@ -21,6 +21,7 @@
21 21 "dependencies": {
22 22 "crypto": "0.0.3",
23 23 "ini": "^1.3.4",
  24 + "lru-cache": "^4.0.1",
24 25 "sate24": "git+http://gitlab.kodesumber.com/reload97/node-sate24.git",
25 26 "sate24-expresso": "git+http://gitlab.kodesumber.com/reload97/sate24-expresso.git",
26 27 "winston": "^2.2.0",
... ... @@ -4,12 +4,16 @@ var xml = require('xml');
4 4 var url = require('url');
5 5 var http = require('http');
6 6 var xml2js = require('xml2js').parseString;
  7 +var LRU = require("lru-cache");
7 8  
8 9 var config;
9 10 var callbackReport;
10 11 var aaa;
11 12 var logger;
12 13 var options;
  14 +var taskCache = LRU({max: 2000});
  15 +
  16 +var sleepBeforeRetry = 30;
13 17  
14 18 function start(_config, _callbackReport, options) {
15 19 config = _config;
... ... @@ -129,10 +133,25 @@ function topupResponseHandler(body) {
129 133 }
130 134  
131 135 callbackReport(trxid, rc, message);
  136 +
  137 + if (rc == '68') {
  138 + task = taskCache.get(trxid);
  139 + if (!task) {
  140 + return;
  141 + }
  142 +
  143 + logger.info('Got pending status, retrying in ' + sleepBeforeRetry + 's');
  144 + setTimeout(topupRequest, sleepBeforeRetry * 1000, task);
  145 + } else {
  146 + taskCache.del(trxid);
  147 + }
132 148 });
133 149 }
134 150  
135 151 function topupRequest(task, retry) {
  152 +
  153 + taskCache.set(task.requestId, task);
  154 +
136 155 var remoteProduct = task.remoteProduct.split(',');
137 156  
138 157 var params = {