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