Skip to content

Commit 78570cd

Browse files
committed
K8SPXC-1482 Add waiting period after peer list update
This helps to avoid acting too frequently on stale DNS resolves
1 parent 0aae0d7 commit 78570cd

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

cmd/peer-list/main.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636

3737
const (
3838
pollPeriod = 1 * time.Second
39+
waitPeriod = 30 * time.Second
3940
)
4041

4142
var (
@@ -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\nwas %v\nnow %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\nwas %v\nnow %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

Comments
 (0)