@@ -132,30 +132,45 @@ async fn handle_healthz(
132132 env : & dyn Environment ,
133133 graphql_http_path : & str ,
134134) -> HttpResponse {
135- let query = env
135+ let default_query = "{ __typename }" . to_string ( ) ;
136+ let mut query = env
136137 . get ( EXO_HEALTHZ_QUERY )
137- . unwrap_or_else ( || "{ __typename }" . to_string ( ) ) ;
138+ . unwrap_or_else ( || default_query. clone ( ) ) ;
139+ let mut response_pointer = env. get ( EXO_HEALTHZ_RESPONSE_JSON_POINTER ) ;
138140 let variables = match env. get ( EXO_HEALTHZ_VARIABLES ) {
139141 Some ( raw) => match expand_env_placeholders ( & raw , env) {
140142 Ok ( expanded) => match serde_json:: from_str :: < Value > ( & expanded) {
141143 Ok ( value) => Some ( value) ,
142144 Err ( err) => {
143- return HttpResponse :: ServiceUnavailable ( ) . json ( json ! ( {
144- "status" : "error" ,
145- "message" : format!( "Invalid {} JSON: {}" , EXO_HEALTHZ_VARIABLES , err) ,
146- } ) ) ;
145+ tracing:: warn!(
146+ "Invalid {} JSON; falling back to default health check: {}" ,
147+ EXO_HEALTHZ_VARIABLES ,
148+ err
149+ ) ;
150+ query = default_query;
151+ response_pointer = None ;
152+ None
147153 }
148154 } ,
149155 Err ( err) => {
150- return HttpResponse :: ServiceUnavailable ( ) . json ( json ! ( {
151- "status" : "error" ,
152- "message" : err ,
153- } ) ) ;
156+ tracing :: warn! ( "{}; falling back to default health check" , err ) ;
157+ query = default_query ;
158+ response_pointer = None ;
159+ None
154160 }
155161 } ,
156- None => None ,
162+ None => {
163+ if env. get ( EXO_HEALTHZ_QUERY ) . is_some ( ) {
164+ tracing:: warn!(
165+ "{} not set; falling back to default health check" ,
166+ EXO_HEALTHZ_VARIABLES
167+ ) ;
168+ query = default_query;
169+ response_pointer = None ;
170+ }
171+ None
172+ }
157173 } ;
158- let response_pointer = env. get ( EXO_HEALTHZ_RESPONSE_JSON_POINTER ) ;
159174
160175 match execute_graphql_health_check (
161176 system_router,
0 commit comments