|
|
@ -367,7 +367,16 @@ func RunThread(ctx * GraphContext, thread Thread) error {
|
|
|
|
ctx.Log.Logf("thread", "THREAD_RUN: %s", thread.ID())
|
|
|
|
ctx.Log.Logf("thread", "THREAD_RUN: %s", thread.ID())
|
|
|
|
|
|
|
|
|
|
|
|
err := UpdateStates(ctx, []GraphNode{thread}, func(nodes NodeMap) (error) {
|
|
|
|
err := UpdateStates(ctx, []GraphNode{thread}, func(nodes NodeMap) (error) {
|
|
|
|
return LockLockables(ctx, []Lockable{thread}, thread, nil, nodes)
|
|
|
|
thread_state := thread.State().(ThreadState)
|
|
|
|
|
|
|
|
owner_id := NodeID("")
|
|
|
|
|
|
|
|
if thread_state.Owner() != nil {
|
|
|
|
|
|
|
|
owner_id = thread_state.Owner().ID()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Don't lock the thread if it's already locked itself
|
|
|
|
|
|
|
|
if owner_id != thread.ID() {
|
|
|
|
|
|
|
|
return LockLockables(ctx, []Lockable{thread}, thread, nil, nodes)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
})
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|