This project is mirrored from https://gitee.com/mirrors/nomad.git.
Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
- 10 Oct, 2018 1 commit
-
-
Nick Ethier authored
-
- 06 Oct, 2018 1 commit
-
-
Nick Ethier authored
-
- 05 Oct, 2018 1 commit
-
-
Alex Dadgar authored
-
- 04 Oct, 2018 2 commits
-
-
Alex Dadgar authored
-
Alex Dadgar authored
-
- 28 Sep, 2018 3 commits
-
-
Michael Schurter authored
-
Michael Schurter authored
The interesting decision in this commit was to expose AR's state and not a fully materialized Allocation struct. AR.clientAlloc builds an Alloc that contains the task state, so I considered simply memoizing and exposing that method. However, that would lead to AR having two awkwardly similar methods: - Alloc() - which returns the server-sent alloc - ClientAlloc() - which returns the fully materialized client alloc Since ClientAlloc() could be memoized it would be just as cheap to call as Alloc(), so why not replace Alloc() entirely? Replacing Alloc() entirely would require Update() to immediately materialize the task states on server-sent Allocs as there may have been local task state changes since the server received an Alloc update. This quickly becomes difficult to reason about: should Update hooks use the TaskStates? Are state changes caused by TR Update hooks immediately reflected in the Alloc? Should AR persist its copy of the Alloc? If so, are its TaskStates canonical or the TaskStates on TR? So! Forget that. Let's separate the static Allocation from the dynamic AR & TR state! - AR.Alloc() is for static Allocation access (often for the Job) - AR.AllocState() is for the dynamic AR & TR runtime state (deployment status, task states, etc). If code needs to know the status of a task: AllocState() If code needs to know the names of tasks: Alloc() It should be very easy for a developer to reason about which method they should call and what they can do with the return values.
-
Michael Schurter authored
Multiple receivers raced for the WaitResult when killing tasks which could lead to a deadlock if the "wrong" receiver won. Wrap handlers in an ugly little proxy to avoid this. At first I wanted to push this into drivers, but the result is tied to the TR's handle lifecycle -- not the lifecycle of an alloc or task.
-
- 24 Sep, 2018 1 commit
-
-
Nick Ethier authored
* client/executor: refactor client to remove interpolation * executor: POC libcontainer based executor * vendor: use hashicorp libcontainer fork * vendor: add libcontainer/nsenter dep * executor: updated executor interface to simplify operations * executor: implement logging pipe * logmon: new logmon plugin to manage task logs * driver/executor: use logmon for log management * executor: fix tests and windows build * executor: fix logging key names * executor: fix test failures * executor: add config field to toggle between using libcontainer and standard executors * logmon: use discover utility to discover nomad executable * executor: only call libcontainer-shim on main in linux * logmon: use seperate path configs for stdout/stderr fifos * executor: windows fixes * executor: created reusable pid stats collection utility that can be used in an executor * executor: update fifo.Open calls * executor: fix build * remove executor from...
-
- 21 Sep, 2018 1 commit
-
-
Michael Schurter authored
Tested except for the net/rpc specific error case which may need changing in the gRPC world.
-
- 18 Sep, 2018 30 commits
-
-
Michael Schurter authored
* 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.
-
Michael Schurter authored
-
Michael Schurter authored
-
Michael Schurter authored
Also remove initial alloc from broadcaster as it just caused useless extra processing.
-
Michael Schurter authored
* 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.
-
Michael Schurter authored
Still WIP as it does not handle deletions.
-
Michael Schurter authored
-
Michael Schurter authored
Updates are applied asynchronously but sequentially
-
Michael Schurter authored
-
Michael Schurter authored
Deregistration works but difficult to test due to terminal updates not being fully implemented in the new client/ar/tr.
-
Michael Schurter authored
also updated comments
-
Alex Dadgar authored
-
Alex Dadgar authored
-
Alex Dadgar authored
-
Alex Dadgar authored
-
Alex Dadgar authored
-
Michael Schurter authored
-
Michael Schurter authored
Restoring calls NewAR -> Restore -> Run NewAR now calls NewTR AR.Restore calls TR.Restore AR.Run calls TR.Run
-
Alex Dadgar authored
-
Alex Dadgar authored
-
Alex Dadgar authored
-
Alex Dadgar authored
-
Michael Schurter authored
splits apart local and remote persistence removes some locking *for now*
-
Michael Schurter authored
-
Michael Schurter authored
-
Michael Schurter authored
-
Michael Schurter authored
I think I like this pattern better as some Config vals are mutable (Alloc) and some aren't and some are used to derive other values and never used directly. Promoting them onto the TR struct is a little more work but is hopefully more clear as to how each value is used.
-
Michael Schurter authored
Tons left to do and lots of churn: 1. No state saving 2. No shutdown or gc 3. Removed AR factory *for now* 4. Made all "Config" structs local to the package they configure 5. Added allocID to GC to avoid a lookup Really hating how many things use *structs.Allocation. It's not bad without state saving, but if AllocRunner starts updating its copy things get racy fast.
-
Michael Schurter authored
-
Michael Schurter authored
-