mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			915 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			915 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package health
 | |
| 
 | |
| // Healther interface needs to be implemented by each plugin willing to provide
 | |
| // healthhceck information to the health plugin. Note this method should return
 | |
| // quickly, i.e. just checking a boolean status, as it is called every second
 | |
| // from the health plugin.
 | |
| type Healther interface {
 | |
| 	// Health returns a boolean indicating the health status of a plugin.
 | |
| 	// False indicates unhealthy.
 | |
| 	Health() bool
 | |
| }
 | |
| 
 | |
| // Ok returns the global health status of all plugin configured in this server.
 | |
| func (h *health) Ok() bool {
 | |
| 	h.RLock()
 | |
| 	defer h.RUnlock()
 | |
| 	return h.ok
 | |
| }
 | |
| 
 | |
| // SetOk sets the global health status of all plugin configured in this server.
 | |
| func (h *health) SetOk(ok bool) {
 | |
| 	h.Lock()
 | |
| 	defer h.Unlock()
 | |
| 	h.ok = ok
 | |
| }
 | |
| 
 | |
| // poll polls all healthers and sets the global state.
 | |
| func (h *health) poll() {
 | |
| 	for _, m := range h.h {
 | |
| 		if !m.Health() {
 | |
| 			h.SetOk(false)
 | |
| 			return
 | |
| 		}
 | |
| 	}
 | |
| 	h.SetOk(true)
 | |
| }
 |