Commit Graph

6238 Commits (d45ceff4b7da5358130209e499aaad1e6e489a79)

Author SHA1 Message Date
Frank Schroeder 90c83a32b5 agent: fix 'consul leave' shutdown race (#2880)
When the agent is triggered to shutdown via an external 'consul leave'
command delivered via the HTTP API then the client expects to receive a
response when the agent is down. This creates a race on when to shutdown
the agent itself like the RPC server, the checks and the state and the
external endpoints like DNS and HTTP. Ideally, the external endpoints
should be shutdown before the internal state but if the goal is to
respond reliably that the agent is down then this is not possible.

This patch splits the agent shutdown into two parts implemented in a
single method to keep it simple and unambiguos for the caller. The first
stage shuts down the internal state, checks, RPC server, ...
synchronously and then triggers the shutdown of the external endpoints
asychronously. This way the caller is guaranteed that the internal state
services are down when Shutdown returns and there remains enough time to
send a response.

Fixes #2880
2017-06-19 21:24:26 +02:00
Kyle Havlovitz 5473255f98 Update encryption.html.md 2017-06-16 12:54:25 -07:00
Preetha Appan b3b2e9dcb4 Added unit test to verify consistentRead method behavior 2017-06-16 11:58:12 -05:00
Preetha Appan 44f5086873 Code review feedback, fixed major logic bug 2017-06-16 10:49:54 -05:00
Preetha Appan 72af7b9bc4 Redo bug fix for stale reads on server startup, leveraging RPCHOldtimeout instead of maxQueryTime, plus tests 2017-06-15 22:41:30 -05:00
Kyle Havlovitz f021c778ad Create CHANGELOG.md 2017-06-15 15:29:58 -07:00
Kyle Havlovitz 5d99ee80ca Add an option to disable keyring file (#3145)
Also disables keyring file in dev mode.
2017-06-15 15:24:04 -07:00
vijay rama raju samanuri 5507a310dd Typo in CHANGELOG (#3149) 2017-06-15 07:23:21 -07:00
James Phillips 3f2aac0124 Create CHANGELOG.md 2017-06-14 16:25:20 -07:00
Seth Vargo a8f1e7ebf9 Add EDNS0 support (#3131)
This is a refactor of GH-1980. Originally I tried to do a straight
rebase, but the code has changed too much.
2017-06-14 16:22:54 -07:00
preetapan 695fde556f Merge pull request #3143 from hashicorp/fix_build
Fixed static asset build target and checked in new executable for ass…
2017-06-12 11:00:27 -07:00
Preetha Appan cf5006c4f4 Fixed static asset build target and checked in new executable for assetfs 2017-06-12 12:57:02 -05:00
Scott Woods 7696a9f8be Fix bad copy/paste (#3139)
Description was probably originally copied from the "delete" request.
2017-06-10 14:46:25 -07:00
Frank Schroeder b3aee2fc56 simplify main.go 2017-06-10 18:52:45 +02:00
Frank Schroeder 1c75cf1af5 pkg refactor
command/agent/*                  -> agent/*
    command/consul/*                 -> agent/consul/*
    command/agent/command{,_test}.go -> command/agent{,_test}.go
    command/base/command.go          -> command/base.go
    command/base/*                   -> command/*
    commands.go                      -> command/commands.go

The script which did the refactor is:

(
	cd $GOPATH/src/github.com/hashicorp/consul
	git mv command/agent/command.go command/agent.go
	git mv command/agent/command_test.go command/agent_test.go
	git mv command/agent/flag_slice_value{,_test}.go command/
	git mv command/agent .
	git mv command/base/command.go command/base.go
	git mv command/base/config_util{,_test}.go command/
	git mv commands.go command/
	git mv consul agent
	rmdir command/base/

	gsed -i -e 's|package agent|package command|' command/agent{,_test}.go
	gsed -i -e 's|package agent|package command|' command/flag_slice_value{,_test}.go
	gsed -i -e 's|package base|package command|' command/base.go command/config_util{,_test}.go
	gsed -i -e 's|package main|package command|' command/commands.go

	gsed -i -e 's|base.Command|BaseCommand|' command/commands.go
	gsed -i -e 's|agent.Command|AgentCommand|' command/commands.go
	gsed -i -e 's|\tCommand:|\tBaseCommand:|' command/commands.go
	gsed -i -e 's|base\.||' command/commands.go
	gsed -i -e 's|command\.||' command/commands.go

	gsed -i -e 's|command|c|' main.go
	gsed -i -e 's|range Commands|range command.Commands|' main.go
	gsed -i -e 's|Commands: Commands|Commands: command.Commands|' main.go

	gsed -i -e 's|base\.BoolValue|BoolValue|' command/operator_autopilot_set.go
	gsed -i -e 's|base\.DurationValue|DurationValue|' command/operator_autopilot_set.go
	gsed -i -e 's|base\.StringValue|StringValue|' command/operator_autopilot_set.go
	gsed -i -e 's|base\.UintValue|UintValue|' command/operator_autopilot_set.go

	gsed -i -e 's|\bCommand\b|BaseCommand|' command/base.go
	gsed -i -e 's|BaseCommand Options|Command Options|' command/base.go
	gsed -i -e 's|base.Command|BaseCommand|' command/*.go
	gsed -i -e 's|c\.Command|c.BaseCommand|g' command/*.go
	gsed -i -e 's|\tCommand:|\tBaseCommand:|' command/*_test.go
	gsed -i -e 's|base\.||' command/*_test.go

	gsed -i -e 's|\bCommand\b|AgentCommand|' command/agent{,_test}.go
	gsed -i -e 's|cmd.AgentCommand|cmd.BaseCommand|' command/agent.go

	gsed -i -e 's|cli.AgentCommand = new(Command)|cli.Command = new(AgentCommand)|' command/agent_test.go
	gsed -i -e 's|exec.AgentCommand|exec.Command|' command/agent_test.go
	gsed -i -e 's|exec.BaseCommand|exec.Command|' command/agent_test.go
	gsed -i -e 's|NewTestAgent|agent.NewTestAgent|' command/agent_test.go
	gsed -i -e 's|= TestConfig|= agent.TestConfig|' command/agent_test.go
	gsed -i -e 's|: RetryJoin|: agent.RetryJoin|' command/agent_test.go

	gsed -i -e 's|\.\./\.\./|../|' command/config_util_test.go

	gsed -i -e 's|\bverifyUniqueListeners|VerifyUniqueListeners|' agent/config{,_test}.go command/agent.go
	gsed -i -e 's|\bserfLANKeyring\b|SerfLANKeyring|g' agent/{agent,keyring,testagent}.go command/agent.go
	gsed -i -e 's|\bserfWANKeyring\b|SerfWANKeyring|g' agent/{agent,keyring,testagent}.go command/agent.go
	gsed -i -e 's|\bNewAgent\b|agent.New|g' command/agent{,_test}.go
	gsed -i -e 's|\bNewAgent|New|' agent/{acl_test,agent,testagent}.go

	gsed -i -e 's|\bAgent\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bBool\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bConfig\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bDefaultConfig\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bDevConfig\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bMergeConfig\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bReadConfigPaths\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bParseMetaPair\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bSerfLANKeyring\b|agent.&|g' command/agent{,_test}.go
	gsed -i -e 's|\bSerfWANKeyring\b|agent.&|g' command/agent{,_test}.go

	gsed -i -e 's|circonus\.agent|circonus|g' command/agent{,_test}.go
	gsed -i -e 's|logger\.agent|logger|g' command/agent{,_test}.go
	gsed -i -e 's|metrics\.agent|metrics|g' command/agent{,_test}.go
	gsed -i -e 's|// agent.Agent|// agent|' command/agent{,_test}.go
	gsed -i -e 's|a\.agent\.Config|a.Config|' command/agent{,_test}.go

	gsed -i -e 's|agent\.AppendSliceValue|AppendSliceValue|' command/{configtest,validate}.go

	gsed -i -e 's|consul/consul|agent/consul|' GNUmakefile

	gsed -i -e 's|\.\./test|../../test|' agent/consul/server_test.go

	# fix imports
	f=$(grep -rl 'github.com/hashicorp/consul/command/agent' * | grep '\.go')
	gsed -i -e 's|github.com/hashicorp/consul/command/agent|github.com/hashicorp/consul/agent|' $f
	goimports -w $f

	f=$(grep -rl 'github.com/hashicorp/consul/consul' * | grep '\.go')
	gsed -i -e 's|github.com/hashicorp/consul/consul|github.com/hashicorp/consul/agent/consul|' $f
	goimports -w $f

	goimports -w command/*.go main.go
)
2017-06-10 18:52:45 +02:00
Frank Schroeder 9ceef2b32e test: move discover tests 2017-06-10 18:52:45 +02:00
Frank Schroeder d2ee591fbf use 'c' as command receiver for simple commands 2017-06-10 18:52:45 +02:00
Frank Schroeder 902f4caff2 agent: move watch plans into agent 2017-06-10 18:52:45 +02:00
James Phillips 3835788d6a Update CHANGELOG.md 2017-06-09 21:11:16 -07:00
James Phillips 1f040b6a7a Create CHANGELOG.md 2017-06-09 15:51:50 -07:00
preetapan 2de032125b Fixed regression with dns server start condition (#3137) 2017-06-09 15:50:06 -07:00
Seth Vargo 401380ae41
Update CHANGELOG 2017-06-09 15:13:28 -04:00
Seth Vargo 864358caf0 Merge pull request #3136 from hashicorp/sethvargo/api-ux
Parse values given to ?passing in the API
2017-06-09 15:10:23 -04:00
Seth Vargo 89f16984f9
Simplify 2017-06-09 14:55:04 -04:00
Seth Vargo ee1b5d5024
Update comment 2017-06-09 14:51:34 -04:00
Seth Vargo 532f8d1435
Parse values given to ?passing in the API
This PR fixes GH-2212 in the most backwards-compatible way I can think
of. If the user does not pass a value for `?passing`, it's assumed to be
true, which mirrors the current behavior. However, if the user passes
any value for passing, that value is parsed as a bool using strconv.

It's important to note that this is technically a breaking change.
Previously using `?passing=false` would return only passing nodes. While
this behavior is obviously incorrect, it was the previous behavior. We
should call this out very clearly in the CHANGELOG.
2017-06-09 14:36:00 -04:00
James Phillips 7e4406e5b9
Puts the tree into 0.9.0 dev mode. 2017-06-09 08:27:15 -07:00
James Phillips c5596e3574
Bumps the website version to 0.8.4. 2017-06-09 08:03:24 -07:00
James Phillips f4360770d8
Release v0.8.4 2017-06-09 07:44:26 -07:00
James Phillips d968d8b648
Puts the tree into 0.8.4. release mode. 2017-06-09 07:34:00 -07:00
James Phillips 076417064f
Removes obsolete Windows build scripts. 2017-06-09 01:13:28 -07:00
James Phillips de74e430f3
Removes obsolete Windows batch file and instructions.
We officially just cross-compile to Windows, and soon will have the normal
Go build working. Since we no longer have any cgo dependencies, none of this
complexity is really needed.
2017-06-09 01:11:38 -07:00
James Phillips 34704c7080 Merge pull request #3133 from hashicorp/less-parallel
Makes tests less parallel and relaxes timing.
2017-06-09 00:02:35 -07:00
James Phillips 86713c1b8a
Opens up timing bound on flaky test. 2017-06-08 21:37:52 -07:00
James Phillips a87c9b528e
Removes t.Parallel() on any consul package tests that use a test server. 2017-06-08 21:34:07 -07:00
James Phillips 2039ae903b Merge pull request #3128 from hashicorp/broken-tests
Fixes HTTP header compare by including standard headers.
2017-06-08 14:11:15 -07:00
James Phillips 66ec9c7a7d
Fixes HTTP header compare by including standard headers. 2017-06-08 14:10:46 -07:00
Frank Schroeder b5f8d6f9fd agent: fix time.Duration parsing
The duration can be passed as a string, a float64 or a time.Duration
and this patch handles this properly.
2017-06-08 22:42:49 +02:00
James Phillips 76e8ed07b0 Create CHANGELOG.md 2017-06-08 13:16:32 -07:00
Preetha Appan 51b0f991c3 Updated changelog 2017-06-08 13:04:53 -07:00
preetapan 06edd1eb4f Merge pull request #3127 from hashicorp/s3_encrypt_doc
Added documentation for new s3 server side encryption
2017-06-08 12:44:53 -07:00
Preetha Appan ec0cfae5ab Added documentation for new s3 server side encryption 2017-06-08 11:39:10 -07:00
James Phillips 22e89abd80 Merge pull request #3126 from hashicorp/doc-eureka
website: Add a vs Eureka. Fixes #1295
2017-06-08 11:04:28 -07:00
Armon Dadgar df55d9fbb0 website: Add a vs Eureka. Fixes #1295 2017-06-08 11:00:30 -07:00
James Phillips 967a7a400b Create CHANGELOG.md 2017-06-08 07:25:19 -07:00
James Phillips 0a3bcf0f41 Create CHANGELOG.md 2017-06-08 07:24:42 -07:00
James Phillips 08f60eb64f Create CHANGELOG.md 2017-06-08 07:22:29 -07:00
James Phillips 4a6b7f6c61 Merge pull request #3124 from hashicorp/log-signal-events
agent: log events and exit code to the log file
2017-06-08 07:21:24 -07:00
Seth Vargo 138f1c12d9
Update middleman 2017-06-08 08:49:43 -04:00
Frank Schroeder 01bc7dd3c4
test: log exit code in cluster.bash 2017-06-08 14:06:10 +02:00