2017-09-14 09:36:06 +01:00
|
|
|
// generated by directives_generate.go; DO NOT EDIT
|
|
|
|
|
|
2018-01-15 13:54:10 -08:00
|
|
|
package plugin
|
2017-09-14 09:36:06 +01:00
|
|
|
|
|
|
|
|
import (
|
2017-10-08 04:27:57 -07:00
|
|
|
// Include all plugins.
|
2020-09-24 18:14:41 +02:00
|
|
|
_ "github.com/coredns/caddy/onevent"
|
2019-09-04 23:43:45 +08:00
|
|
|
_ "github.com/coredns/coredns/plugin/acl"
|
2019-04-28 11:46:45 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/any"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/auto"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/autopath"
|
2019-08-09 12:40:28 +05:30
|
|
|
_ "github.com/coredns/coredns/plugin/azure"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/bind"
|
2019-11-10 08:10:12 +00:00
|
|
|
_ "github.com/coredns/coredns/plugin/bufsize"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/cache"
|
2019-03-29 19:40:23 +00:00
|
|
|
_ "github.com/coredns/coredns/plugin/cancel"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/chaos"
|
2019-08-18 02:29:09 +05:30
|
|
|
_ "github.com/coredns/coredns/plugin/clouddns"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/debug"
|
2020-03-26 08:42:23 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/dns64"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/dnssec"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/dnstap"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/erratic"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/errors"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/etcd"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/file"
|
2018-02-08 15:00:25 +00:00
|
|
|
_ "github.com/coredns/coredns/plugin/forward"
|
2021-07-14 08:25:30 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/geoip"
|
2019-03-14 08:12:28 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/grpc"
|
2025-12-18 05:08:59 +02:00
|
|
|
_ "github.com/coredns/coredns/plugin/grpc_server"
|
2021-07-15 10:10:16 +02:00
|
|
|
_ "github.com/coredns/coredns/plugin/header"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/health"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/hosts"
|
2025-12-18 05:08:59 +02:00
|
|
|
_ "github.com/coredns/coredns/plugin/https"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/https3"
|
2018-12-14 09:41:51 +00:00
|
|
|
_ "github.com/coredns/coredns/plugin/k8s_external"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/kubernetes"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/loadbalance"
|
2020-11-05 15:02:07 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/local"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/log"
|
2018-07-20 19:45:17 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/loop"
|
2018-06-29 12:44:16 +03:00
|
|
|
_ "github.com/coredns/coredns/plugin/metadata"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/metrics"
|
2021-03-15 20:07:55 +05:30
|
|
|
_ "github.com/coredns/coredns/plugin/minimal"
|
2024-11-13 20:40:25 +03:00
|
|
|
_ "github.com/coredns/coredns/plugin/multisocket"
|
2025-09-30 18:35:32 +02:00
|
|
|
_ "github.com/coredns/coredns/plugin/nomad"
|
2017-12-04 08:28:27 -08:00
|
|
|
_ "github.com/coredns/coredns/plugin/nsid"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/pprof"
|
2026-02-11 02:14:05 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/proxyproto"
|
2025-05-19 03:49:21 +03:00
|
|
|
_ "github.com/coredns/coredns/plugin/quic"
|
2019-03-07 20:35:16 +00:00
|
|
|
_ "github.com/coredns/coredns/plugin/ready"
|
2018-03-02 17:17:26 -08:00
|
|
|
_ "github.com/coredns/coredns/plugin/reload"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/rewrite"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/root"
|
2018-01-15 09:59:29 -08:00
|
|
|
_ "github.com/coredns/coredns/plugin/route53"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/secondary"
|
plugin/shed: add UDP overload protection plugin (#8312)
* plugin/shed: add UDP overload protection plugin
UDP responses written back through one listener socket serialize on the
Go runtime's internal fdMutex, which allows at most 2^20-1 concurrent
operations per file descriptor and panics the process when exceeded.
CoreDNS serves UDP with one goroutine per query, all writing through the
shared packet connection, so a sustained overload parks every excess
in-flight query in that wait queue until the process dies with
"too many concurrent operations on a single file or socket". Observed
in production: ~2.8M goroutines and 60GiB RSS before the panic.
The shed plugin makes the panic structurally unreachable. It installs,
via Config.UDPDecorateWriterFunc, a per-socket bounded evict-oldest
stack drained newest-first by a single writer goroutine, so the fd
never sees more than one writer and residual capacity under overload
always goes to the freshest response. While a socket's stack is full,
arriving queries are dropped before any plugin runs. Drops are silent
(the client's resolver retries elsewhere) and counted in
coredns_shed_dropped_total{server, reason}.
plugin/shed/fdmutex_test.go demonstrates the failure and the fix with
one shared flood harness. Two subprocess tests reproduce the exact
runtime panic without the plugin's write discipline - one deterministic
(a held write plus >2^20 queued writers), one with nothing held or
mocked; both exercise the Go runtime rather than the plugin, so they
are gated behind SHED_FLOOD_TEST=1. The counterfactual - the same load
through the plugin's stack, completing with every response accounted
for as written or dropped - runs in every test invocation, including
-race, at 50k responders, and at the full 1.5M with SHED_FLOOD_TEST=1:
SHED_FLOOD_TEST=1 go test ./plugin/shed/
Signed-off-by: Ryan Brewster <rpb@anthropic.com>
* test: add shed e2e test
Query a shed-enabled server over UDP (the plugin's deferred
single-writer path) and TCP (which shed passes through), and check
that coredns_shed_dropped_total is exported with its reason label.
No-Verification-Needed: test-only change
Signed-off-by: Ryan Brewster <rpb@anthropic.com>
---------
Signed-off-by: Ryan Brewster <rpb@anthropic.com>
2026-07-27 05:13:25 -04:00
|
|
|
_ "github.com/coredns/coredns/plugin/shed"
|
2019-08-29 15:41:59 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/sign"
|
2018-01-08 13:13:25 +00:00
|
|
|
_ "github.com/coredns/coredns/plugin/template"
|
2022-12-28 11:14:16 +00:00
|
|
|
_ "github.com/coredns/coredns/plugin/timeouts"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/tls"
|
|
|
|
|
_ "github.com/coredns/coredns/plugin/trace"
|
2019-11-01 12:02:43 -04:00
|
|
|
_ "github.com/coredns/coredns/plugin/transfer"
|
2022-06-27 15:48:34 -04:00
|
|
|
_ "github.com/coredns/coredns/plugin/tsig"
|
2022-09-08 14:56:27 -04:00
|
|
|
_ "github.com/coredns/coredns/plugin/view"
|
2017-09-14 09:36:06 +01:00
|
|
|
_ "github.com/coredns/coredns/plugin/whoami"
|
|
|
|
|
)
|