|  |  |  | @ -298,12 +298,26 @@ func (ext *LockableExt) HandleTimeoutSignal(ctx *Context, node *Node, source Nod | 
		
	
		
			
				|  |  |  |  |   var messages Messages = nil | 
		
	
		
			
				|  |  |  |  |   var changes Changes = nil | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   //TODO: Handle timeout errors better
 | 
		
	
		
			
				|  |  |  |  |   wait_info, found := node.ProcessResponse(ext.WaitInfos, signal) | 
		
	
		
			
				|  |  |  |  |   if found == true { | 
		
	
		
			
				|  |  |  |  |     state, found := ext.Requirements[wait_info.NodeID] | 
		
	
		
			
				|  |  |  |  |     if found == true { | 
		
	
		
			
				|  |  |  |  |       ctx.Log.Logf("lockable", "%s timed out %s", wait_info.NodeID, ReqStateStrings[state]) | 
		
	
		
			
				|  |  |  |  |       switch state { | 
		
	
		
			
				|  |  |  |  |       case Locking: | 
		
	
		
			
				|  |  |  |  |         ext.State = AbortingLock | 
		
	
		
			
				|  |  |  |  |         ext.Requirements[wait_info.NodeID] = Unlocked | 
		
	
		
			
				|  |  |  |  |         for id, state := range(ext.Requirements) { | 
		
	
		
			
				|  |  |  |  |           if state == Locked { | 
		
	
		
			
				|  |  |  |  |             ext.Requirements[id] = Unlocking | 
		
	
		
			
				|  |  |  |  |             lock_signal := NewLockSignal("unlock") | 
		
	
		
			
				|  |  |  |  |             ext.WaitInfos[lock_signal.Id] = node.QueueTimeout(id, lock_signal, 100*time.Millisecond) | 
		
	
		
			
				|  |  |  |  |             messages = messages.Add(ctx, id, node, nil, lock_signal) | 
		
	
		
			
				|  |  |  |  |             ctx.Log.Logf("lockable", "sent abort unlock to %s from %s", id, node.ID) | 
		
	
		
			
				|  |  |  |  |           } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |       case Unlocking: | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       ctx.Log.Logf("lockable", "%s timed out", wait_info.NodeID) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
	
		
			
				
					|  |  |  | 
 |