Watchdog: use abort action as a default if killing is enabled. (#13523)

Use abort action as a default if killing is enabled and we're on a supported platform.

Risk Level: low
Testing: unit tests
Docs Changes: Included
Release Notes: Included

See PR #13208 for context as the reason it's part of core envoy and not an extension.

Signed-off-by: Kevin Baichoo <kbaichoo@google.com>

Mirrored from https://github.com/envoyproxy/envoy @ 415af040e09a1f6993c15ffc022793d39ecf5e8e
pull/623/head
data-plane-api(Azure Pipelines) 4 years ago
parent 9531df245b
commit 830f86d7b0
  1. 2
      BUILD
  2. 32
      envoy/extensions/watchdog/abort_action/v3alpha/abort_action.proto
  3. 0
      envoy/watchdog/v3alpha/BUILD
  4. 2
      envoy/watchdog/v3alpha/README.md
  5. 29
      envoy/watchdog/v3alpha/abort_action.proto
  6. 2
      versioning/BUILD

@ -248,7 +248,6 @@ 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",
@ -272,6 +271,7 @@ proto_library(
"//envoy/type/metadata/v3:pkg",
"//envoy/type/tracing/v3:pkg",
"//envoy/type/v3:pkg",
"//envoy/watchdog/v3alpha:pkg",
],
)

@ -1,32 +0,0 @@
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;
}

@ -0,0 +1,2 @@
This contains watchdog actions that are part of core Envoy, and therefore cannot
be in the extensions directory.

@ -0,0 +1,29 @@
syntax = "proto3";
package envoy.watchdog.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.watchdog.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 kills a stuck thread to kill the process.]
// A GuardDogAction that will terminate the process by killing 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. By default
// this will be registered to run as the last watchdog action on KILL and
// MULTIKILL events if those are enabled.
message AbortActionConfig {
// How long to wait for the thread to respond to the thread kill function
// before killing the process from this action. This is a blocking action.
// By default this is 5 seconds.
google.protobuf.Duration wait_duration = 1;
}

@ -131,7 +131,6 @@ 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",
@ -155,6 +154,7 @@ proto_library(
"//envoy/type/metadata/v3:pkg",
"//envoy/type/tracing/v3:pkg",
"//envoy/type/v3:pkg",
"//envoy/watchdog/v3alpha:pkg",
],
)

Loading…
Cancel
Save