diff --git a/BUILD b/BUILD index 4aad4899..d981622e 100644 --- a/BUILD +++ b/BUILD @@ -245,6 +245,7 @@ proto_library( "//envoy/extensions/upstreams/http/http/v3:pkg", "//envoy/extensions/upstreams/http/tcp/v3:pkg", "//envoy/extensions/wasm/v3:pkg", + "//envoy/extensions/watchdog/abort_action/v3alpha:pkg", "//envoy/extensions/watchdog/profile_action/v3alpha:pkg", "//envoy/service/accesslog/v3:pkg", "//envoy/service/auth/v3:pkg", diff --git a/envoy/extensions/watchdog/abort_action/v3alpha/BUILD b/envoy/extensions/watchdog/abort_action/v3alpha/BUILD new file mode 100644 index 00000000..ee92fb65 --- /dev/null +++ b/envoy/extensions/watchdog/abort_action/v3alpha/BUILD @@ -0,0 +1,9 @@ +# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. + +load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") + +licenses(["notice"]) # Apache 2 + +api_proto_package( + deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], +) diff --git a/envoy/extensions/watchdog/abort_action/v3alpha/abort_action.proto b/envoy/extensions/watchdog/abort_action/v3alpha/abort_action.proto new file mode 100644 index 00000000..7d793be8 --- /dev/null +++ b/envoy/extensions/watchdog/abort_action/v3alpha/abort_action.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; + +package envoy.extensions.watchdog.abort_action.v3alpha; + +import "google/protobuf/duration.proto"; + +import "udpa/annotations/status.proto"; +import "udpa/annotations/versioning.proto"; +import "validate/validate.proto"; + +option java_package = "io.envoyproxy.envoy.extensions.watchdog.abort_action.v3alpha"; +option java_outer_classname = "AbortActionProto"; +option java_multiple_files = true; +option (udpa.annotations.file_status).work_in_progress = true; +option (udpa.annotations.file_status).package_version_status = ACTIVE; + +// [#protodoc-title: Watchdog Action that sends a SIGABRT to kill the process.] +// [#extension: envoy.watchdog.abort_action] + +// A GuardDogAction that will terminate the process by sending SIGABRT to the +// stuck thread. This would allow easier access to the call stack of the stuck +// thread since we would run signal handlers on that thread. This would be +// more useful than the default watchdog kill behaviors since those PANIC +// from the watchdog's thread. + +// This is currently only implemented for systems that support kill to send +// signals. +message AbortActionConfig { + // How long to wait for the thread to respond to the SIGABRT before killing the + // process from this action. This is a blocking action. + google.protobuf.Duration wait_duration = 1; +} diff --git a/versioning/BUILD b/versioning/BUILD index c93b1f7d..48c8df7f 100644 --- a/versioning/BUILD +++ b/versioning/BUILD @@ -128,6 +128,7 @@ proto_library( "//envoy/extensions/upstreams/http/http/v3:pkg", "//envoy/extensions/upstreams/http/tcp/v3:pkg", "//envoy/extensions/wasm/v3:pkg", + "//envoy/extensions/watchdog/abort_action/v3alpha:pkg", "//envoy/extensions/watchdog/profile_action/v3alpha:pkg", "//envoy/service/accesslog/v3:pkg", "//envoy/service/auth/v3:pkg",