44 "net"
55 "net/http"
66 "strings"
7+ "sync/atomic"
78
89 "go.opentelemetry.io/otel/attribute"
910 semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
@@ -14,7 +15,9 @@ import (
1415 "github.com/keboola/keboola-as-code/internal/pkg/utils/errors"
1516)
1617
17- const ExceptionIDPrefix = "keboola-appsproxy-"
18+ const (
19+ ExceptionIDPrefix = "keboola-appsproxy-"
20+ )
1821
1922type errorPageData struct {
2023 App * AppData
@@ -24,13 +27,20 @@ type errorPageData struct {
2427 ExceptionID string
2528}
2629
27- func (pw * Writer ) ProxyErrorHandlerFor (app api.AppConfig ) func (w http.ResponseWriter , req * http.Request , err error ) {
30+ func (pw * Writer ) ProxyErrorHandlerFor (app api.AppConfig , restartDisabled * atomic. Bool ) func (w http.ResponseWriter , req * http.Request , err error ) {
2831 return func (w http.ResponseWriter , req * http.Request , err error ) {
29- pw .ProxyErrorHandler (w , req , app , err )
32+ pw .ProxyErrorHandler (w , req , app , restartDisabled , err )
3033 }
3134}
3235
33- func (pw * Writer ) ProxyErrorHandler (w http.ResponseWriter , req * http.Request , app api.AppConfig , err error ) {
36+ func (pw * Writer ) ProxyErrorHandler (w http.ResponseWriter , req * http.Request , app api.AppConfig , restartDisabled * atomic.Bool , err error ) {
37+ // Check for restart disabled error
38+ if restartDisabled .Load () {
39+ pw .logger .Info (req .Context (), "app has restart disabled, rendering restart disabled page" )
40+ pw .WriteRestartDisabledPage (w , req , app )
41+ return
42+ }
43+
3444 var dnsError * net.DNSError
3545 if errors .As (err , & dnsError ) {
3646 pw .logger .Info (req .Context (), "app is not running, rendering spinner page" )
0 commit comments