@@ -36,6 +36,7 @@ import (
3636
3737const (
3838 pollPeriod = 1 * time .Second
39+ waitPeriod = 30 * time .Second
3940)
4041
4142var (
@@ -140,6 +141,10 @@ func main() {
140141 }
141142 newPeers := sets .NewString ()
142143 var err error
144+
145+ isFirstUpdate := true
146+ lastChangeTime := time .Now ()
147+
143148 for peers := sets .NewString (); script != "" ; time .Sleep (pollPeriod ) {
144149 newPeers , err = lookup (* svc )
145150 if err != nil {
@@ -154,9 +159,15 @@ func main() {
154159 peerList := newPeers .List ()
155160 sort .Strings (peerList )
156161 if strings .Join (peers .List (), ":" ) != strings .Join (newPeers .List (), ":" ) {
157- log .Printf ("Peer list updated\n was %v\n now %v" , peers .List (), newPeers .List ())
158- shellOut (strings .Join (peerList , "\n " ), script )
159- peers = newPeers
162+ if isFirstUpdate || time .Since (lastChangeTime ) >= waitPeriod {
163+ log .Printf ("Peer list updated\n was %v\n now %v" , peers .List (), newPeers .List ())
164+ shellOut (strings .Join (peerList , "\n " ), script )
165+ peers = newPeers
166+ lastChangeTime = time .Now ()
167+ isFirstUpdate = false
168+ } else {
169+ log .Printf ("Ignoring peer list update, last change was %v ago" , time .Since (lastChangeTime ))
170+ }
160171 }
161172 script = * onChange
162173 }
0 commit comments