func storeData(kv *api.KV, key string, value []byte) { pair, _, err := kv.Get(key, nil) if err != nil { Error.Fatal("Failed reading from Consul for key:", key, "Error:", err) } if pair == nil || string(pair.Value) != string(value) { var p *api.KVPair if pair == nil { p = &api.KVPair{Key: key, Value: value} } else { p = &api.KVPair{Key: key, Value: value, ModifyIndex: pair.ModifyIndex} } success, meta, err := kv.CAS(p, nil) if err != nil { Error.Fatal(err) } if !success { storeData(kv, key, value) } else { Trace.Print("Request took: ", meta.RequestTime.Seconds(), " seconds") Info.Print("Updated key '", key, "' to '", string(value), "'") } } else { Trace.Print("not updating key", key) } }