Quellcode durchsuchen

discovery: apply host filter to discoverd hosts

Apply host filter if not nil to refreshRing
Chris Bannister vor 9 Jahren
Ursprung
Commit
a434aa00f9
2 geänderte Dateien mit 10 neuen und 6 gelöschten Zeilen
  1. 6 4
      host_source.go
  2. 4 2
      session.go

+ 6 - 4
host_source.go

@@ -345,10 +345,12 @@ func (r *ringDescriber) refreshRing() error {
 	// TODO: move this to session
 	// TODO: handle removing hosts here
 	for _, h := range hosts {
-		if host, ok := r.session.ring.addHostIfMissing(h); !ok {
-			r.session.pool.addHost(h)
-		} else {
-			host.update(h)
+		if r.session.cfg.HostFilter == nil || r.session.cfg.HostFilter.Accept(h) {
+			if host, ok := r.session.ring.addHostIfMissing(h); !ok {
+				r.session.pool.addHost(h)
+			} else {
+				host.update(h)
+			}
 		}
 	}
 

+ 4 - 2
session.go

@@ -148,8 +148,10 @@ func NewSession(cfg ClusterConfig) (*Session, error) {
 	}
 
 	for _, host := range hosts {
-		s.ring.addHost(host)
-		s.handleNodeUp(net.ParseIP(host.Peer()), host.Port(), false)
+		if s.cfg.HostFilter == nil || s.cfg.HostFilter.Accept(host) {
+			s.ring.addHost(host)
+			s.handleNodeUp(net.ParseIP(host.Peer()), host.Port(), false)
+		}
 	}
 
 	// TODO(zariel): we probably dont need this any more as we verify that we