Hashicorp plugins redirect os.Stderr and os.Stdout to a pipe from
which the plugin client (the simulator) can read. This allows plugins
to log as normal and the client can discard or display the logs for
debugging. However go-plugin did not implement STDERR and STDOUT
syncing for gRPC plugins until
https://github.com/hashicorp/go-plugin/pull/135.
Plugins such as the HPA controller log quite a bit and the pipe
fills because no one is reading from it. Once the pipe is full,
the simulation will deadlock with the sim waiting for the plugin to
scale, and the plugin waiting for the sim to read from STDERR.
This change upgrades all modules to go-plugin to v1.3.0 to enable
draining STDERR. Currently the logs are discarded. But they can be
output by passing os.Stderr to NewClient as the SyncStderr parameter.
Hashicorp plugins redirect os.Stderr and os.Stdout to a pipe from which the plugin client (the simulator) can read. This allows plugins to log as normal and the client can discard or display the logs for debugging. However go-plugin did not implement STDERR and STDOUT syncing for gRPC plugins until https://github.com/hashicorp/go-plugin/pull/135.
Plugins such as the HPA controller log quite a bit and the pipe fills because no one is reading from it. Once the pipe is full, the simulation will deadlock with the sim waiting for the plugin to scale, and the plugin waiting for the sim to read from STDERR.
This change upgrades all modules to go-plugin to v1.3.0 to enable draining STDERR. Currently the logs are discarded. But they can be output by passing os.Stderr to NewClient as the SyncStderr parameter.