@@ -384,7 +384,7 @@ class WSGILite extends DefSubRoute {
384
384
removeClusterMasterResponseHandler ( clusterMasterResponseHandler ) {
385
385
this . clusterMasterResponseHandlers = this . clusterMasterResponseHandlers . filter ( ( item ) => item !== clusterMasterResponseHandler ) ;
386
386
}
387
- requestActionOnClusterMaster ( data ) {
387
+ requestActionOnClusterMaster ( data , timeout ) {
388
388
let requestId = `${ process . pid } _${ Date . now ( ) } _${ Math . floor ( Math . random ( ) * Number . MAX_SAFE_INTEGER ) } ` ;
389
389
let msgRequest = { event : MSG_WSGILITE_DO_THINGS_MASTER , requestId, data} ;
390
390
@@ -393,6 +393,16 @@ class WSGILite extends DefSubRoute {
393
393
let worker ;
394
394
let handle ;
395
395
let msgResponse = { event : MSG_WSGILITE_DO_THINGS_WORKER_SUCCESS , requestId} ;
396
+ if ( timeout && timeout > 0 ) {
397
+ setTimeout ( ( ) => {
398
+ let e = new Error ( 'Timeout' ) ;
399
+ msgResponse . error = e ;
400
+ msgResponse . errorMessage = e . toString ( ) ;
401
+ msgResponse . errorStacktrace = e . stack ;
402
+ msgResponse . event = MSG_WSGILITE_DO_THINGS_WORKER_FAILURE ;
403
+ reject ( msgResponse ) ;
404
+ } , timeout ) ;
405
+ }
396
406
397
407
this . handleClusterMasterRequest ( worker , msgRequest , handle ) . catch ( ( e ) => {
398
408
msgResponse . error = e ;
@@ -418,6 +428,17 @@ class WSGILite extends DefSubRoute {
418
428
} ;
419
429
this . addClusterMasterResponseHandler ( handler ) ;
420
430
process . send ( msgRequest ) ;
431
+
432
+ if ( timeout && timeout > 0 ) {
433
+ setTimeout ( ( ) => {
434
+ this . removeClusterMasterResponseHandler ( handler ) ;
435
+
436
+ let e = new Error ( 'Timeout' ) ;
437
+ let msgResponse = { event : MSG_WSGILITE_DO_THINGS_WORKER_FAILURE , requestId, error : e , errorMessage : e . toString ( ) , errorStacktrace : e . stack }
438
+ msgResponse . event = MSG_WSGILITE_DO_THINGS_WORKER_FAILURE ;
439
+ reject ( msgResponse ) ;
440
+ } , timeout ) ;
441
+ }
421
442
} ) ;
422
443
}
423
444
handleClusterMasterRequest ( worker , msg , handle ) {
@@ -429,7 +450,7 @@ class WSGILite extends DefSubRoute {
429
450
const errorHandler = ( e ) => {
430
451
if ( worker && ( ! errorHandled ) ) {
431
452
console . log ( e ) ;
432
- worker . send ( { event : MSG_WSGILITE_DO_THINGS_WORKER_FAILURE , requestId, error : e , errorMessage : e . toString ( ) , errorStacktrace : e . stacktrace } ) ;
453
+ worker . send ( { event : MSG_WSGILITE_DO_THINGS_WORKER_FAILURE , requestId, error : e , errorMessage : e . toString ( ) , errorStacktrace : e . stack } ) ;
433
454
}
434
455
errorHandled = true ;
435
456
return Promise . reject ( e ) ;
0 commit comments