MCPcopy Create free account
hub / github.com/cortexproject/cortex / writeRuleGroupsIfNewer

Method writeRuleGroupsIfNewer

pkg/ruler/mapper.go:127–161  ·  view source on GitHub ↗
(groups []rulefmt.RuleGroup, filename string)

Source from the content-addressed store, hash-verified

125}
126
127func (m *mapper) writeRuleGroupsIfNewer(groups []rulefmt.RuleGroup, filename string) (bool, error) {
128 sort.Slice(groups, func(i, j int) bool {
129 return groups[i].Name > groups[j].Name
130 })
131
132 rgs := rulefmt.RuleGroups{Groups: groups}
133
134 d, err := yaml.Marshal(&rgs)
135 if err != nil {
136 return false, err
137 }
138
139 _, err = m.FS.Stat(filename)
140 if err == nil {
141 current, err := afero.ReadFile(m.FS, filename)
142 if err != nil {
143 return false, err
144 }
145 newHash := md5.New()
146 currentHash := md5.New()
147
148 // bailout if there is no update
149 if string(currentHash.Sum(current)) == string(newHash.Sum(d)) {
150 return false, nil
151 }
152 }
153
154 level.Info(m.logger).Log("msg", "updating rule file", "file", filename)
155 err = afero.WriteFile(m.FS, filename, d, 0777)
156 if err != nil {
157 return false, err
158 }
159
160 return true, nil
161}

Callers 1

MapRulesMethod · 0.95

Calls 2

MarshalMethod · 0.45
LogMethod · 0.45

Tested by

no test coverage detected