diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f8d683c5..9696e2834 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ BUG FIXES: * agent: Fixed an issue with the server manager where periodic server client connection rebalancing could select a failed server. This affects agents in client mode, as well as servers talking to other servers, including over the WAN. [[GH-3463](https://github.com/hashicorp/consul/issues/3463)] * agent: IPv6 addresses without port numbers and without surrounding brackets are now properly handled for joins. This affects all join types, but in particular this was discovered with AWS joins where the APIs return addresses formatted this way. [[GH-3671](https://github.com/hashicorp/consul/issues/3671)] * agent: Fixed a rare startup panic of the Consul agent related to the LAN Serf instance ordering with the router manager. [[GH-3680](https://github.com/hashicorp/consul/issues/3680)] +* agent: Added back an exception for the `snapshot_agent` config key so that those configs can again live alongside Consul's configs. [[GH-3678](https://github.com/hashicorp/consul/issues/3678)] * dns: Fixed an issue were components of a host name near the datacenter could be quietly ignored (eg. `foo.service.dc1.extra.consul` would silently ignore `.extra`); now an `NXDOMAIN` error will be returned. [[GH-3200](https://github.com/hashicorp/consul/issues/3200)] * server: Fixed an issue where performing rolling updates of Consul servers could result in an outage from old servers remaining in the cluster. Consul's Autopilot would normally remove old servers when new ones come online, but it was also waiting to promote servers to voters in pairs to maintain an odd quorum size. The pairwise promotion feature was removed so that servers become voters as soon as they are stable, allowing Autopilot to remove old servers in a safer way. When upgrading from Consul 1.0, you may need to manually force-leave old servers as part of a rolling update to Consul 1.0.1. [[GH-3611](https://github.com/hashicorp/consul/issues/3611)] diff --git a/agent/config/config.go b/agent/config/config.go index 8fad60cbc..fc30db934 100644 --- a/agent/config/config.go +++ b/agent/config/config.go @@ -234,6 +234,12 @@ type Config struct { VerifyServerHostname *bool `json:"verify_server_hostname,omitempty" hcl:"verify_server_hostname" mapstructure:"verify_server_hostname"` Watches []map[string]interface{} `json:"watches,omitempty" hcl:"watches" mapstructure:"watches"` + // This isn't used by Consul but we've documented a feature where users + // can deploy their snapshot agent configs alongside their Consul configs + // so we have a placeholder here so it can be parsed but this doesn't + // manifest itself in any way inside the runtime config. + SnapshotAgent map[string]interface{} `json:"snapshot_agent,omitempty" hcl:"snapshot_agent" mapstructure:"snapshot_agent"` + // non-user configurable values ACLDisabledTTL *string `json:"acl_disabled_ttl,omitempty" hcl:"acl_disabled_ttl" mapstructure:"acl_disabled_ttl"` AEInterval *string `json:"ae_interval,omitempty" hcl:"ae_interval" mapstructure:"ae_interval"` diff --git a/agent/config/runtime_test.go b/agent/config/runtime_test.go index 03389cd28..0776b4383 100644 --- a/agent/config/runtime_test.go +++ b/agent/config/runtime_test.go @@ -1194,6 +1194,7 @@ func TestConfigFlagsAndEdgecases(t *testing.T) { // ------------------------------------------------------------ // transformations // + { desc: "raft performance scaling", args: []string{`-data-dir=` + dataDir}, @@ -1922,6 +1923,21 @@ func TestConfigFlagsAndEdgecases(t *testing.T) { rt.DataDir = dataDir }, }, + { + desc: "ignore snapshot_agent sub-object", + args: []string{ + `-data-dir=` + dataDir, + }, + json: []string{ + `{ "snapshot_agent": { "dont": "care" } }`, + }, + hcl: []string{ + `snapshot_agent = { dont = "care" }`, + }, + patch: func(rt *RuntimeConfig) { + rt.DataDir = dataDir + }, + }, } testConfig(t, tests, dataDir)