Commit b84090305166723fcdf2e8e642e46889299caebe

Authored by Adhidarma Hadiwinoto
1 parent 3e96a0f029
Exists in master

max retry

Showing 1 changed file with 22 additions and 9 deletions Side-by-side Diff

... ... @@ -119,6 +119,12 @@ function topupResponseHandler(body) {
119 119 trxid = result.ciwaru.trxid[0];
120 120 }
121 121  
  122 + var task = taskCache.get(trxid);
  123 + if (!task) {
  124 + logger.warn('Got reply for undefined task');
  125 + return;
  126 + }
  127 +
122 128 if (message.indexOf('PENDING') >= 0) {
123 129 rc = '68';
124 130 }
... ... @@ -133,16 +139,21 @@ function topupResponseHandler(body) {
133 139 }
134 140 }
135 141  
136   - callbackReport(trxid, rc, message);
  142 + if ((task.retry == maxRetry) || (rc != '68')) {
  143 + callbackReport(trxid, rc, message);
  144 + }
137 145  
138 146 if (rc == '68') {
139   - task = taskCache.get(trxid);
140   - if (!task) {
141   - return;
  147 + task.retry--;
  148 + taskCache.set(trxid, task);
  149 +
  150 + if (task.retry) {
  151 + logger.info('Got pending status, retrying in ' + sleepBeforeRetry + 's');
  152 + setTimeout(topupRequest, sleepBeforeRetry * 1000, task);
  153 + }
  154 + else {
  155 + logger.warn('Maximum retry for pending status exceeded', {task: task});
142 156 }
143   -
144   - logger.info('Got pending status, retrying in ' + sleepBeforeRetry + 's');
145   - setTimeout(topupRequest, sleepBeforeRetry * 1000, task);
146 157 } else {
147 158 taskCache.del(trxid);
148 159 }
... ... @@ -150,8 +161,10 @@ function topupResponseHandler(body) {
150 161 }
151 162  
152 163 function topupRequest(task, retry) {
153   -
154   - logger.info('Executing task', {retry: retry});
  164 +
  165 + if (retry === undefined) {
  166 + task.retry = maxRetry;
  167 + }
155 168  
156 169 taskCache.set(task.requestId, task);
157 170