client/logmon: acquire executable in init block
This PR causes the logmon task runner to acquire the binary of the Nomad executable in an 'init' block, so as to almost certainly get the name while the nomad file still exists. This is an attempt at fixing the case where a deleted Nomad file (e.g. during upgrade) may be getting renamed with a mysterious suffix first. If this doesn't work, as a last resort we can literally just trim the mystery string. Fixes: #14079
This commit is contained in:
parent
7077d1f9aa
commit
423ea1a5c4
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:bug
|
||||||
|
client/logmon: fixed a bug where logmon cannot find nomad executable
|
||||||
|
```
|
|
@ -5,22 +5,27 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
"github.com/hashicorp/go-hclog"
|
||||||
plugin "github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/nomad/client/logmon/proto"
|
"github.com/hashicorp/nomad/client/logmon/proto"
|
||||||
"github.com/hashicorp/nomad/plugins/base"
|
"github.com/hashicorp/nomad/plugins/base"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var bin = getBin()
|
||||||
|
|
||||||
|
func getBin() string {
|
||||||
|
b, err := os.Executable()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
// LaunchLogMon launches a new logmon or reattaches to an existing one.
|
// LaunchLogMon launches a new logmon or reattaches to an existing one.
|
||||||
// TODO: Integrate with base plugin loader
|
// TODO: Integrate with base plugin loader
|
||||||
func LaunchLogMon(logger hclog.Logger, reattachConfig *plugin.ReattachConfig) (LogMon, *plugin.Client, error) {
|
func LaunchLogMon(logger hclog.Logger, reattachConfig *plugin.ReattachConfig) (LogMon, *plugin.Client, error) {
|
||||||
logger = logger.Named("logmon")
|
logger = logger.Named("logmon")
|
||||||
bin, err := os.Executable()
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
conf := &plugin.ClientConfig{
|
conf := &plugin.ClientConfig{
|
||||||
HandshakeConfig: base.Handshake,
|
HandshakeConfig: base.Handshake,
|
||||||
Plugins: map[string]plugin.Plugin{
|
Plugins: map[string]plugin.Plugin{
|
||||||
|
|
Loading…
Reference in New Issue