Commit 60cef8c804f4cbe94e43a70c620d69fa670283b4
1 parent
3d36a443
Exists in
master
and in
1 other branch
update timeout
Showing
1 changed file
with
89 additions
and
25 deletions
Show diff stats
ais-structure/src/modules/helper/connection.js
| @@ -10,17 +10,36 @@ var connection = []; | @@ -10,17 +10,36 @@ var connection = []; | ||
| 10 | 10 | ||
| 11 | connection.requestSoapToSACF = async function (soap,cmd,myMethod) { | 11 | connection.requestSoapToSACF = async function (soap,cmd,myMethod) { |
| 12 | 12 | ||
| 13 | + var service = cfg.service.SACF; | ||
| 14 | + var retry = service[myMethod+"_"+cmd+"_Retry"]; | ||
| 15 | + | ||
| 13 | var params = { | 16 | var params = { |
| 14 | - url : cfg.service.SACF[myMethod+"_"+cmd+"_URL"], | 17 | + url : service[myMethod+"_"+cmd+"_URL"], |
| 15 | body : messageSOAP.objectToSOAP(soap,cmd), | 18 | body : messageSOAP.objectToSOAP(soap,cmd), |
| 16 | method : myMethod, | 19 | method : myMethod, |
| 17 | timeout : cfg.service.SACF[myMethod+"_"+cmd+"_Timeout"]*1000 | 20 | timeout : cfg.service.SACF[myMethod+"_"+cmd+"_Timeout"]*1000 |
| 18 | } | 21 | } |
| 19 | 22 | ||
| 20 | - stats.sendSACFRequest(cfg.service.SACF.Name,cmd) | ||
| 21 | - log.logDetail.addOutput(cfg.service.SACF.Name,cmd,"Request",params,soap); | 23 | + if(!retry) |
| 24 | + retry = cfg.Default_Retry; | ||
| 25 | + | ||
| 26 | + var objectData = { | ||
| 27 | + maxRetry : retry, | ||
| 28 | + curRetry : 1 | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + var funStats = function(){ | ||
| 32 | + stats.sendSACFRequest(service.Name,cmd); | ||
| 33 | + log.logDetail.addOutput(service.Name,cmd,"Request",params,soap); | ||
| 34 | + }; | ||
| 35 | + | ||
| 36 | + var funStats = { | ||
| 37 | + start : funStats, | ||
| 38 | + error : function(response){log.addErrorSummary(service.Name,cmd,response);} | ||
| 39 | + }; | ||
| 40 | + | ||
| 22 | 41 | ||
| 23 | - var result = await asyncRequest(params,cmd,cfg.service.SACF.Name); | 42 | + var result = await asyncRequest(params,objectData,funStats); |
| 24 | 43 | ||
| 25 | if(result.err) | 44 | if(result.err) |
| 26 | { | 45 | { |
| @@ -48,7 +67,16 @@ connection.requestSoapToSACF = async function (soap,cmd,myMethod) { | @@ -48,7 +67,16 @@ connection.requestSoapToSACF = async function (soap,cmd,myMethod) { | ||
| 48 | 67 | ||
| 49 | connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | 68 | connection.requestJsonToD01 = async function (obj,cmd,myMethod) { |
| 50 | 69 | ||
| 51 | - var service = cfg.service.D01; | 70 | + var service = cfg.service.D01; |
| 71 | + var retry = service[myMethod+"_"+cmd+"_Retry"]; | ||
| 72 | + if(!retry) | ||
| 73 | + retry = cfg.Default_Retry; | ||
| 74 | + | ||
| 75 | + var objectData = { | ||
| 76 | + maxRetry : retry, | ||
| 77 | + curRetry : 1 | ||
| 78 | + } | ||
| 79 | + | ||
| 52 | // JSON.stringify(json) | 80 | // JSON.stringify(json) |
| 53 | var params = { | 81 | var params = { |
| 54 | url : service[myMethod+"_"+cmd+"_URL"], | 82 | url : service[myMethod+"_"+cmd+"_URL"], |
| @@ -57,13 +85,23 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | @@ -57,13 +85,23 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | ||
| 57 | timeout : service[myMethod+"_"+cmd+"_Timeout"]*1000 | 85 | timeout : service[myMethod+"_"+cmd+"_Timeout"]*1000 |
| 58 | } | 86 | } |
| 59 | 87 | ||
| 60 | - log.logDetail.addOutput(service.Name,cmd,"Request",params,params.body); | 88 | + var funStats = function(){ |
| 89 | + stats.sendRestRequest(service.Name,myMethod,cmd); | ||
| 90 | + log.logDetail.addOutput(service.Name,cmd,"Request",params,obj); | ||
| 91 | + }; | ||
| 92 | + | ||
| 93 | + var funStats = { | ||
| 94 | + start : funStats, | ||
| 95 | + error : function(response){log.addErrorSummary(service.Name,cmd,response);} | ||
| 96 | + }; | ||
| 97 | + | ||
| 98 | + | ||
| 61 | 99 | ||
| 62 | var result = {}; | 100 | var result = {}; |
| 63 | result.response = {}; | 101 | result.response = {}; |
| 64 | result.response.resultData = []; | 102 | result.response.resultData = []; |
| 65 | 103 | ||
| 66 | - stats.sendRestRequest(service.Name,myMethod,cmd); | 104 | + |
| 67 | 105 | ||
| 68 | if(params.method == "GET") | 106 | if(params.method == "GET") |
| 69 | { | 107 | { |
| @@ -76,7 +114,7 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | @@ -76,7 +114,7 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | ||
| 76 | for(var i=0;i<genUrl.length;i++) | 114 | for(var i=0;i<genUrl.length;i++) |
| 77 | multiSend.push({url:genUrl[i],method:params.method}); | 115 | multiSend.push({url:genUrl[i],method:params.method}); |
| 78 | 116 | ||
| 79 | - var parallelRes = await parallelRequest(multiSend,cmd,cfg.service.D01.Name); | 117 | + var parallelRes = await parallelRequest(multiSend,objectData,funStats); |
| 80 | 118 | ||
| 81 | var dataRes = {}; | 119 | var dataRes = {}; |
| 82 | for(var i=0;i<multiSend.length;i++) | 120 | for(var i=0;i<multiSend.length;i++) |
| @@ -122,7 +160,7 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | @@ -122,7 +160,7 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | ||
| 122 | params.url = genUrl[0]; | 160 | params.url = genUrl[0]; |
| 123 | delete params.body; | 161 | delete params.body; |
| 124 | 162 | ||
| 125 | - var resultRes = await asyncRequest(params,cmd,service.Name); | 163 | + var resultRes = await asyncRequest(params,objectData,funStats); |
| 126 | 164 | ||
| 127 | // console.log(result); | 165 | // console.log(result); |
| 128 | if(resultRes.response) | 166 | if(resultRes.response) |
| @@ -138,9 +176,10 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | @@ -138,9 +176,10 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | ||
| 138 | { | 176 | { |
| 139 | params.body = JSON.stringify(params.body); | 177 | params.body = JSON.stringify(params.body); |
| 140 | 178 | ||
| 141 | - var resultRes = await asyncRequest(params,cmd,service.Name); | 179 | + var resultRes = await asyncRequest(params,objectData,funStats); |
| 142 | 180 | ||
| 143 | - result.response = JSON.parse(resultRes.body); | 181 | + if(resultRes.response) |
| 182 | + result.response = JSON.parse(resultRes.body); | ||
| 144 | 183 | ||
| 145 | } | 184 | } |
| 146 | 185 | ||
| @@ -193,40 +232,65 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | @@ -193,40 +232,65 @@ connection.requestJsonToD01 = async function (obj,cmd,myMethod) { | ||
| 193 | }; | 232 | }; |
| 194 | 233 | ||
| 195 | 234 | ||
| 196 | -async function parallelRequest(multiParams,cmd,node) | 235 | +async function parallelRequest(multiParams,objectData,funStat) |
| 197 | { | 236 | { |
| 198 | 237 | ||
| 199 | var promises = []; | 238 | var promises = []; |
| 200 | 239 | ||
| 201 | for(var i=0;i<multiParams.length;i++) | 240 | for(var i=0;i<multiParams.length;i++) |
| 202 | - promises.push(asyncRequest (multiParams[i],cmd,node)); | 241 | + promises.push(asyncRequest (multiParams[i],objectData,funStat)); |
| 203 | 242 | ||
| 204 | var res = await Promise.all(promises); | 243 | var res = await Promise.all(promises); |
| 205 | - for(var i=0;i<res.length;i++) | ||
| 206 | - { | ||
| 207 | - if(!res[i].err) | ||
| 208 | - stats.receiveResponse(node,cmd,"Success"); | 244 | + // for(var i=0;i<res.length;i++) |
| 245 | + // { | ||
| 246 | + // if(!res[i].err) | ||
| 247 | + // stats.receiveResponse(node,cmd,"Success"); | ||
| 209 | 248 | ||
| 210 | - } | 249 | + // } |
| 211 | 250 | ||
| 212 | 251 | ||
| 213 | return res; | 252 | return res; |
| 214 | } | 253 | } |
| 215 | 254 | ||
| 216 | -function asyncRequest (params = {},cmd,node) { | 255 | +function asyncRequest (params = {},objectData,funStat) { |
| 256 | + | ||
| 257 | + // console.log(objectData); | ||
| 258 | + funStat.start(); | ||
| 217 | 259 | ||
| 218 | // console.log("Start : "+new Date().toISOString()); | 260 | // console.log("Start : "+new Date().toISOString()); |
| 219 | return new Promise((resolve, reject) => { | 261 | return new Promise((resolve, reject) => { |
| 220 | request(params, function (error, response, body) { | 262 | request(params, function (error, response, body) { |
| 221 | 263 | ||
| 222 | if (error) { | 264 | if (error) { |
| 265 | + | ||
| 266 | + if( objectData.maxRetry == objectData.curRetry-1) | ||
| 267 | + { | ||
| 268 | + resolve({ | ||
| 269 | + 'body' : body, | ||
| 270 | + 'err' : error | ||
| 271 | + }); | ||
| 272 | + }else | ||
| 273 | + { | ||
| 274 | + var errRes = {}; | ||
| 275 | + if(error.code == 'ETIMEDOUT'){ | ||
| 276 | + errRes.resultCode = "50003"; | ||
| 277 | + errRes.resultDescription = "Timeout"; | ||
| 278 | + } else if(error.code == 'ECONNREFUSED'){ | ||
| 279 | + errRes.resultCode = "50002"; | ||
| 280 | + errRes.resultDescription = "Reject"; | ||
| 281 | + } else { | ||
| 282 | + errRes.resultCode = "50000"; | ||
| 283 | + errRes.resultDescription = "System error"; | ||
| 284 | + } | ||
| 285 | + | ||
| 286 | + // console.log("retry "+objectData.curRetry); | ||
| 287 | + funStat.error(errRes); | ||
| 288 | + objectData.curRetry++; | ||
| 289 | + resolve(asyncRequest(params,objectData,funStat)); | ||
| 290 | + } | ||
| 223 | 291 | ||
| 224 | - // console.log("End : "+new Date().toISOString()); | ||
| 225 | - console.log(error.code); | ||
| 226 | - resolve({ | ||
| 227 | - 'body' : body, | ||
| 228 | - 'err' : error | ||
| 229 | - }); | 292 | + |
| 293 | + | ||
| 230 | } else { | 294 | } else { |
| 231 | 295 | ||
| 232 | // stats.receiveResponse(node,cmd,"Success"); | 296 | // stats.receiveResponse(node,cmd,"Success"); |