@@ -112,7 +112,7 @@ func tearDownWorkerScript(handler *workerThread, exitStatus int) {
112112 }
113113
114114 // on exit status 0 we just run the worker script again
115- if exitStatus == 0 {
115+ if exitStatus == 0 && ! handler . isBootingScript {
116116 // TODO: make the max restart configurable
117117 metrics .StopWorker (worker .fileName , StopReasonRestart )
118118 handler .backoff .recordSuccess ()
@@ -122,10 +122,19 @@ func tearDownWorkerScript(handler *workerThread, exitStatus int) {
122122 return
123123 }
124124
125- // on exit status 1 we apply an exponential backoff when restarting
125+ // worker has thrown a fatal error or has not reached frankenphp_handle_request
126126 metrics .StopWorker (worker .fileName , StopReasonCrash )
127- if handler .isBootingScript && handler .backoff .recordFailure () {
128- if ! watcherIsEnabled {
127+
128+ if ! handler .isBootingScript {
129+ // fatal error (could be due to timeouts, etc.)
130+ return
131+ }
132+
133+ logger .Error ("worker script has not reached frankenphp_handle_request" , zap .String ("worker" , worker .fileName ))
134+
135+ // panic after exponential backoff if the worker has never reached frankenphp_handle_request
136+ if handler .backoff .recordFailure () {
137+ if ! watcherIsEnabled && ! handler .state .is (stateReady ) {
129138 logger .Panic ("too many consecutive worker failures" , zap .String ("worker" , worker .fileName ), zap .Int ("failures" , handler .backoff .failureCount ))
130139 }
131140 logger .Warn ("many consecutive worker failures" , zap .String ("worker" , worker .fileName ), zap .Int ("failures" , handler .backoff .failureCount ))
0 commit comments