| 744 | } |
| 745 | |
| 746 | func validateNoWildcardedUserForHeartbeat(clusters map[string]*cluster, cfg []config.Cluster) error { |
| 747 | for c := range cfg { |
| 748 | cfgcl := cfg[c] |
| 749 | clname := cfgcl.Name |
| 750 | cuname := cfgcl.ClusterUsers[0].Name |
| 751 | heartbeat := cfg[c].HeartBeat |
| 752 | cl := clusters[clname] |
| 753 | cu := cl.users[cuname] |
| 754 | |
| 755 | if cu.isWildcarded { |
| 756 | if heartbeat.Request != "/ping" && len(heartbeat.User) == 0 { |
| 757 | return fmt.Errorf( |
| 758 | "`cluster.heartbeat.user ` cannot be unset for %q because a wildcarded user cannot send heartbeat", |
| 759 | clname, |
| 760 | ) |
| 761 | } |
| 762 | } |
| 763 | } |
| 764 | |
| 765 | return nil |
| 766 | } |
| 767 | |
| 768 | func (rp *reverseProxy) restartWithNewConfig(caches map[string]*cache.AsyncCache, clusters map[string]*cluster, users map[string]*user) { |
| 769 | // Reset metrics from the previous configs, which may become irrelevant |