|  |  | @ -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) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     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 LockLockables(ctx, []Lockable{thread}, thread, nil, nodes) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return nil | 
			
		
	
		
		
			
				
					
					|  |  |  |   }) |  |  |  |   }) | 
			
		
	
		
		
			
				
					
					|  |  |  |   if err != nil { |  |  |  |   if err != nil { | 
			
		
	
		
		
			
				
					
					|  |  |  |     return err |  |  |  |     return err | 
			
		
	
	
		
		
			
				
					|  |  | 
 |