From b84090305166723fcdf2e8e642e46889299caebe Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <gua@adhisimon.org> Date: Tue, 3 May 2016 23:45:13 +0700 Subject: [PATCH] max retry --- partner-cjk.js | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/partner-cjk.js b/partner-cjk.js index 234a6f5..ad5b911 100644 --- a/partner-cjk.js +++ b/partner-cjk.js @@ -119,6 +119,12 @@ function topupResponseHandler(body) { trxid = result.ciwaru.trxid[0]; } + var task = taskCache.get(trxid); + if (!task) { + logger.warn('Got reply for undefined task'); + return; + } + if (message.indexOf('PENDING') >= 0) { rc = '68'; } @@ -133,16 +139,21 @@ function topupResponseHandler(body) { } } - callbackReport(trxid, rc, message); + if ((task.retry == maxRetry) || (rc != '68')) { + callbackReport(trxid, rc, message); + } if (rc == '68') { - task = taskCache.get(trxid); - if (!task) { - return; + task.retry--; + taskCache.set(trxid, task); + + if (task.retry) { + logger.info('Got pending status, retrying in ' + sleepBeforeRetry + 's'); + setTimeout(topupRequest, sleepBeforeRetry * 1000, task); + } + else { + logger.warn('Maximum retry for pending status exceeded', {task: task}); } - - logger.info('Got pending status, retrying in ' + sleepBeforeRetry + 's'); - setTimeout(topupRequest, sleepBeforeRetry * 1000, task); } else { taskCache.del(trxid); } @@ -150,8 +161,10 @@ function topupResponseHandler(body) { } function topupRequest(task, retry) { - - logger.info('Executing task', {retry: retry}); + + if (retry === undefined) { + task.retry = maxRetry; + } taskCache.set(task.requestId, task); -- 1.9.0