This commit is contained in:
Alex Dadgar 2018-07-18 11:43:08 -07:00 committed by Michael Schurter
parent 7ddc0eb65c
commit c93cfc89c0
4 changed files with 14 additions and 9 deletions

View file

@ -196,8 +196,9 @@ func (ar *allocRunner) Alloc() *structs.Allocation {
// *and* within Run -- *and* Updates are applid within Run -- we may be able to // *and* within Run -- *and* Updates are applid within Run -- we may be able to
// skip quite a bit of locking? maybe? // skip quite a bit of locking? maybe?
func (ar *allocRunner) SaveState() error { func (ar *allocRunner) SaveState() error {
// XXX Do we move this to the client
return ar.stateDB.Update(func(tx *bolt.Tx) error { return ar.stateDB.Update(func(tx *bolt.Tx) error {
//XXX Track EvalID to only write alloc on change? //XXX Track AllocModifyIndex to only write alloc on change?
// Write the allocation // Write the allocation
return clientstate.PutAllocation(tx, ar.Alloc()) return clientstate.PutAllocation(tx, ar.Alloc())
}) })

View file

@ -1,5 +1,7 @@
package allocrunnerv2 package allocrunnerv2
/*
import ( import (
"testing" "testing"
@ -82,3 +84,4 @@ func TestAllocRunner_Postrun_Basic(t *testing.T) {
require.True(post.run) require.True(post.run)
require.False(pre.run) require.False(pre.run)
} }
*/

View file

@ -5,13 +5,6 @@ import (
"github.com/hashicorp/nomad/helper" "github.com/hashicorp/nomad/helper"
) )
var (
// taskRunnerStateAllKey holds all the task runners state. At the moment
// there is no need to split it
//XXX refactor out of client/state and taskrunner
taskRunnerStateAllKey = []byte("simple-all")
)
// LocalState is Task state which is persisted for use when restarting Nomad // LocalState is Task state which is persisted for use when restarting Nomad
// agents. // agents.
type LocalState struct { type LocalState struct {
@ -48,7 +41,7 @@ type HookState struct {
// Prestart is true if the hook has run Prestart successfully and does // Prestart is true if the hook has run Prestart successfully and does
// not need to run again // not need to run again
PrestartDone bool PrestartDone bool
Data map[string]string Data map[string]string
} }
func (h *HookState) Copy() *HookState { func (h *HookState) Copy() *HookState {

View file

@ -473,6 +473,10 @@ func (tr *TaskRunner) persistLocalState() error {
}) })
} }
// XXX If the objects don't exists since the client shutdown before the task
// runner ever saved state, then we should treat it as a new task runner and not
// return an error
//
// Restore task runner state. Called by AllocRunner.Restore after NewTaskRunner // Restore task runner state. Called by AllocRunner.Restore after NewTaskRunner
// but before Run so no locks need to be acquired. // but before Run so no locks need to be acquired.
func (tr *TaskRunner) Restore(tx *bolt.Tx) error { func (tr *TaskRunner) Restore(tx *bolt.Tx) error {
@ -496,6 +500,10 @@ func (tr *TaskRunner) Restore(tx *bolt.Tx) error {
} }
tr.state = &ts tr.state = &ts
// XXX if driver has task {
// tr.restoreDriver()
// }
return nil return nil
} }