Blame view
lib/client/push-task-prepaid.js
3.49 KB
b76b508a9
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
const MODULE_NAME = 'KOMODO-SDK-PUSH-TRX.CLIENT.PUSH-TASK-PREPAID'; const MAX_RETRY = 3; const RETRY_DELAY_MS = 2 * 1000; const uniqid = require('uniqid'); const config = require('komodo-sdk/config'); const { report } = require('komodo-sdk/gateway/pull'); const logger = require('tektrans-logger'); const wsList = require('./ws-list'); /** * @param {string} xid * @param {object} task * @param {string} gwName * @param {number} [retry] */ const pusher = (xid, task, gwName, retry) => { /** * @type WebSocket */ const ws = wsList[gwName]; |
e7be72729
|
23 |
const senderName = config.handler_name; |
b76b508a9
|
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
if (!ws) { logger.verbose(`${MODULE_NAME} 7EB181CF: Invalid websocket`, { xid, gwName, hasWs: !!ws, }); if ((retry || 0) < MAX_RETRY) { logger.verbose(`${MODULE_NAME} B7B937A2: Will retry`, { xid, retried: retry || 0, delayMs: RETRY_DELAY_MS, }); report({ trx_id: task.trx_id, rc: '68', message: { xid, |
3d22698af
|
43 |
'KOMODO-SDK-PUSH-TRX': { |
b76b508a9
|
44 |
msg: 'B7B937A2 Invalid websocket on pushing to related gateway, will retry', |
e7be72729
|
45 |
gwOrigin: senderName, |
3d22698af
|
46 |
gwTarget: gwName, |
b76b508a9
|
47 |
retried: retry || 0, |
b76b508a9
|
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
}, }, }, xid); setTimeout(() => { logger.verbose(`${MODULE_NAME} EA985FC2: Retrying`, { xid, retried: (retry || 0) + 1, }); pusher(xid, task, gwName, (retry || 0) + 1); }, RETRY_DELAY_MS); } else { logger.warn(`${MODULE_NAME} 7151F200: Retry exceeded`, { xid, retried: (retry || 0) + 1, }); report({ trx_id: task.trx_id, rc: '91', message: { xid, |
3d22698af
|
71 |
'KOMODO-SDK-PUSH-TRX': { |
b76b508a9
|
72 |
msg: '7151F200 Invalid websocket on pushing to related gateway, retry exceeded', |
e7be72729
|
73 |
gwOrigin: senderName, |
3d22698af
|
74 |
gwTarget: gwName, |
b76b508a9
|
75 |
retried: retry || 0, |
b76b508a9
|
76 77 78 79 80 81 82 |
}, }, }, xid); } return; } |
3d22698af
|
83 84 |
const pushReportMsg = `${MODULE_NAME} 1E8EB9B9: Pushing task to related gateway`; logger.verbose(pushReportMsg, { |
b76b508a9
|
85 86 |
xid, gwName, task, }); |
3d22698af
|
87 88 89 90 91 92 93 |
report({ trx_id: task.trx_id, rc: '68', message: { xid, 'KOMODO-SDK-PUSH-TRX': { msg: pushReportMsg, |
e7be72729
|
94 |
gwOrigin: senderName, |
3d22698af
|
95 96 97 98 |
gwTarget: gwName, }, }, }); |
e7be72729
|
99 100 101 102 103 104 105 106 107 108 109 110 |
const newTask = JSON.parse(JSON.stringify(task)); const sdkTrxIdAdder = Number(config.sdk_trx_id_adder); if (sdkTrxIdAdder) { const newTrxId = Number(newTask.trx_id) - sdkTrxIdAdder; logger.verbose(`${MODULE_NAME} 94669AEA: Reverting trx id to original`, { xid, currentTrxId: newTask.trx_id, newTrxId, }); newTask.trx_id = newTrxId; } |
b76b508a9
|
111 112 113 114 |
ws.send(JSON.stringify({ type: 'TASK', ts: new Date(), rid: xid || uniqid(), |
e7be72729
|
115 116 |
senderName, payload: newTask, |
b76b508a9
|
117 118 119 |
})); logger.verbose(`${MODULE_NAME} 7D3CECCA: Task pushed`, { xid, gwName }); |
b76b508a9
|
120 121 122 |
}; module.exports = pusher; |