Alex Dadgar
cebfead6bc
add logger back
2018-10-16 16:53:30 -07:00
Nick Ethier
03422aa529
fifo: add new fifo package for named pipes ( #4665 )
...
* fifo: add new fifo package for named pipes
2018-10-16 16:53:30 -07:00
Alex Dadgar
8504505c0d
client uses passed logger and fix fingerprinters
2018-10-16 16:53:30 -07:00
Nick Ethier
66ff12e5f7
Update runc/libcontainer and friends ( #4655 )
...
* vendor: bump libcontainer and docker to remove Sirupsen imports
* vendor: fix bad vendoring of archive package
* vendor: fix api changes to cgroups in executor
* vendor: fix docker api changes
* vendor: update github.com/Azure/go-ansiterm to use non capitalized logrus import
2018-10-16 16:53:30 -07:00
Michael Schurter
195b8127fb
health_hook: fix panic and add tests
...
Still more testing to do, but I want to get this panic fixed ASAP.
All new tests pass with -race
2018-10-16 16:53:30 -07:00
Michael Schurter
64efc3d301
Emit events before long operations
...
Append when there's nothing blocking between appending and sending an
update to the server.
2018-10-16 16:53:30 -07:00
Michael Schurter
a2b696c4cf
Use a semaphore to block until watcher exits
2018-10-16 16:53:30 -07:00
Michael Schurter
a73162c977
ar: use multierror in update hook loop
...
Make it match TaskRunner update hook behavior
2018-10-16 16:53:30 -07:00
Michael Schurter
a7b427718c
tr: refactor EmitEvents into Emit+Append
...
* UpdateState: set state, append event, persist, update servers
* EmitEvent: append event, persist, update servers
* AppendEvent: append event, persist
AppendEvent may not even have to persist, but for the sake of
correctness I'm going with that for now.
2018-10-16 16:53:30 -07:00
Michael Schurter
93f3ac9ed6
ar: create health setting shim for health watcher
2018-10-16 16:53:30 -07:00
Michael Schurter
4d5aaac6d2
fix detection of task transitioning to running
2018-10-16 16:53:30 -07:00
Michael Schurter
4136e59f79
arv2: implement alloc health watching
...
Also remove initial alloc from broadcaster as it just caused useless
extra processing.
2018-10-16 16:53:30 -07:00
Michael Schurter
5c5c6dc41b
refactor ar hooks into their own files
...
minimize passed dependencies to ease testing
2018-10-16 16:53:30 -07:00
Michael Schurter
0bbf3a93ee
make AllocBroadcaster easier to use
...
And test thoroughly.
2018-10-16 16:53:30 -07:00
Michael Schurter
9d1ea3b228
client: hclog-ify most of the client
...
Leaving fingerprinters in case that interface changes with plugins.
2018-10-16 16:53:30 -07:00
Michael Schurter
e42154fc46
implement stopping, destroying, and disk migration
...
* Stopping an alloc is implemented via Updates but update hooks are
*not* run.
* Destroying an alloc is a best effort cleanup.
* AllocRunner destroy hooks implemented.
* Disk migration and blocking on a previous allocation exiting moved to
its own package to avoid cycles. Now only depends on alloc broadcaster
instead of also using a waitch.
* AllocBroadcaster now only drops stale allocations and always keeps the
latest version.
* Made AllocDir safe for concurrent use
Lots of internal contexts that are currently unused. Unsure if they
should be used or removed.
2018-10-16 16:53:30 -07:00
Michael Schurter
4236255686
lots of comment/log fixes
2018-10-16 16:53:30 -07:00
Michael Schurter
5749ede04e
keep forgetting lxc
2018-10-16 16:53:30 -07:00
Michael Schurter
357641c364
persist alloc state on changes, not periodically
...
Allow alloc and task runners to persist their own state when something
changes instead of periodically syncing all state.
2018-10-16 16:53:30 -07:00
Michael Schurter
820af27171
wrap boltdb in a write deduplicator
...
Saves a tiny bit of cpu and some IO. Sadly doesn't prevent all IO on
duplicate writes as the transactions are still created and committed.
$ go test -bench=. -benchmem
goos: linux
goarch: amd64
pkg: github.com/hashicorp/nomad/helper/boltdd
BenchmarkWriteDeduplication_On-4 500 4059591 ns/op 23736 B/op 56 allocs/op
BenchmarkWriteDeduplication_Off-4 300 4115319 ns/op 25942 B/op 55 allocs/op
2018-10-16 16:53:30 -07:00
Michael Schurter
990228a6e2
wip wrap boltdb to get path information
...
finished but doesn't handle deleting deeply nested buckets
2018-10-16 16:53:30 -07:00
Michael Schurter
a3fe0510d1
Move all encoding and put deduping into state db
...
Still WIP as it does not handle deletions.
2018-10-16 16:53:30 -07:00
Michael Schurter
533bc93b3a
implement all boltdb interactions behind StateDB
2018-10-16 16:53:30 -07:00
Michael Schurter
d890de036a
tr: persist hook state whenever it changes
2018-10-16 16:53:30 -07:00
Michael Schurter
fae5e89a0e
artifacts: don't emit event when there's no artifacts
2018-10-16 16:53:30 -07:00
Michael Schurter
5383d20505
removing old restoration path before api change
2018-10-16 16:53:30 -07:00
Michael Schurter
a5d3e3fb0a
Implement alloc updates in arv2
...
Updates are applied asynchronously but sequentially
2018-10-16 16:53:30 -07:00
Michael Schurter
39b3f3a85b
call handle.Network() instead of storing it
2018-10-16 16:53:30 -07:00
Michael Schurter
7132b67c1e
Add Network method to Handle interface
...
Should probably be moved to an Inspect method in the Driver Plugin world
2018-10-16 16:53:30 -07:00
Michael Schurter
a4b4d7b266
consul service hook
...
Deregistration works but difficult to test due to terminal updates not
being fully implemented in the new client/ar/tr.
2018-10-16 16:53:29 -07:00
Michael Schurter
5be982e674
restore vault client
2018-10-16 16:53:29 -07:00
Michael Schurter
ce04915c9f
log before killing tasks
2018-10-16 16:53:29 -07:00
Michael Schurter
a2bf851805
no need to TaskStateUpdated to return an error
...
also updated comments
2018-10-16 16:53:29 -07:00
Alex Dadgar
fd3bc1bd39
Update state with server
2018-10-16 16:53:29 -07:00
Alex Dadgar
bc905cc61d
Define and thread through state updating interface
2018-10-16 16:53:29 -07:00
Michael Schurter
9a63d6103d
tr: add validate task hook
2018-10-16 16:53:29 -07:00
Michael Schurter
7f4ec50906
missed locking around c.allocs access
2018-10-16 16:53:29 -07:00
Alex Dadgar
c93cfc89c0
wip
2018-10-16 16:53:29 -07:00
Alex Dadgar
7ddc0eb65c
Fix deadlock
2018-10-16 16:53:29 -07:00
Alex Dadgar
3779077052
Remove SetState from interface
2018-10-16 16:53:29 -07:00
Alex Dadgar
e1ba73b515
compile
2018-10-16 16:53:29 -07:00
Michael Schurter
6ebdf532ea
wip split event emitting and state transitions
2018-10-16 16:53:29 -07:00
Michael Schurter
516d641db0
client: implement all-or-nothing alloc restoration
...
Restoring calls NewAR -> Restore -> Run
NewAR now calls NewTR
AR.Restore calls TR.Restore
AR.Run calls TR.Run
2018-10-16 16:53:29 -07:00
Alex Dadgar
e401c660e7
Implement lifecycle hooks on the task runner
2018-10-16 16:53:29 -07:00
Alex Dadgar
89b4ba9cc8
comments
2018-10-16 16:53:29 -07:00
Alex Dadgar
86e81947b4
Hook renames
2018-10-16 16:53:29 -07:00
Alex Dadgar
2599cf9d74
remove comment
2018-10-16 16:53:29 -07:00
Alex Dadgar
88aa0299a9
Template hook
2018-10-16 16:53:29 -07:00
Alex Dadgar
c9765deff1
address comments
2018-10-16 16:53:29 -07:00
Alex Dadgar
80f6ce50c0
vault hook
2018-10-16 16:53:29 -07:00