Hi folks, Fairly new to the k8s world. I am using group cache .I run a go routine to fetch all set of pods for a deployment and update my group cache pool if there is a change every 60 second. The problem i see is if that if there is a change in the pool (pods added) and if the incoming request goes to the newly added pod, sometimes it gives me a cache miss. and tries to reach the data source again. Is this normal? I was in the assumption that it should reach its peers The other strange thing is IT WORKS SOMETIMES, so is there a sync time needed? Sharing a small code snippet. Am i using pool.Set(podIPs...) in a wrong way? func main() { addr := os.Getenv("MY_POD_IP") + ":" + os.Getenv("MY_CONTAINER_PORT") log.Println("Current Pod IP" + addr) k8sClient, err := client.New(config.GetConfigOrDie(), client.Options{}) if err != nil { panic(err) }
namespace := "cache-poc" var prevPodIPs []string pool := groupcache.NewHTTPPool("http://" + addr) // podIPs, err := getPodIPs(namespace, k8sClient) // if err != nil { // fmt.Println("Error getting pod IPs:", err) // return // } // fmt.Println("Peers which are being set:", podIPs) // pool.Set(podIPs...) http.HandleFunc("/color", func(w http.ResponseWriter, r *http.Request) { log.Println("Reached 1") color := r.FormValue("name") var b []byte err := Group.Get(context.TODO(), color, groupcache.AllocatingByteSliceSink(& b)) if err != nil { http.Error(w, err.Error(), http.StatusNotFound) return } w.Write(b) w.Write([]byte{'\n'}) }) go func() { for { podIPs, err := getPodIPs(namespace, k8sClient) if err != nil { fmt.Println("Error getting pod IPs:", err) return } if !reflect.DeepEqual(podIPs, prevPodIPs) { fmt.Println("Pod IPs have changed:") // Print or process the changes here pool.Set(podIPs...) prevPodIPs = podIPs } else { fmt.Println("No changes in Pod IPs.") } log.Printf("Pod IPs: %v\n", podIPs) time.Sleep(60 * time.Second) } }() http.HandleFunc("/set", setHandler) //http.HandleFunc("/get", getHandler) http.HandleFunc("/ack", ackMessage) err = http.ListenAndServe(addr, nil) if err != nil { fmt.Println("Error starting server:", err) } } -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/4c082c51-b32e-4508-a3da-4be3cd577724n%40googlegroups.com.