MCPcopy Index your code
hub / github.com/zalando/postgres-operator / processEvent

Method processEvent

pkg/controller/postgresql.go:184–353  ·  view source on GitHub ↗
(event ClusterEvent)

Source from the content-addressed store, hash-verified

182}
183
184func (c *Controller) processEvent(event ClusterEvent) {
185 var clusterName spec.NamespacedName
186 var clHistory ringlog.RingLogger
187 var err error
188
189 lg := c.logger.WithField("worker", event.WorkerID)
190
191 if event.EventType == EventAdd || event.EventType == EventSync || event.EventType == EventRepair {
192 clusterName = util.NameFromMeta(event.NewSpec.ObjectMeta)
193 } else {
194 clusterName = util.NameFromMeta(event.OldSpec.ObjectMeta)
195 }
196 lg = lg.WithField("cluster-name", clusterName)
197
198 c.clustersMu.RLock()
199 cl, clusterFound := c.clusters[clusterName]
200 if clusterFound {
201 clHistory = c.clusterHistory[clusterName]
202 }
203 c.clustersMu.RUnlock()
204
205 defer c.curWorkerCluster.Store(event.WorkerID, nil)
206
207 if event.EventType == EventRepair {
208 runRepair, lastOperationStatus := cl.NeedsRepair()
209 if !runRepair {
210 lg.Debugf("observed cluster status %s, repair is not required", lastOperationStatus)
211 return
212 }
213 lg.Debugf("observed cluster status %s, running sync scan to repair the cluster", lastOperationStatus)
214 event.EventType = EventSync
215 }
216
217 if event.EventType == EventAdd || event.EventType == EventUpdate || event.EventType == EventSync {
218 // handle deprecated parameters by possibly assigning their values to the new ones.
219 if event.OldSpec != nil {
220 c.mergeDeprecatedPostgreSQLSpecParameters(&event.OldSpec.Spec)
221 }
222 if event.NewSpec != nil {
223 c.warnOnDeprecatedPostgreSQLSpecParameters(&event.NewSpec.Spec)
224 c.mergeDeprecatedPostgreSQLSpecParameters(&event.NewSpec.Spec)
225 }
226
227 if err = c.submitRBACCredentials(event); err != nil {
228 c.logger.Warnf("pods and/or Patroni may misfunction due to the lack of permissions: %v", err)
229 }
230
231 }
232
233 switch event.EventType {
234 case EventAdd:
235 if clusterFound {
236 lg.Infof("received add event for already existing Postgres cluster")
237 return
238 }
239
240 lg.Infof("creating a new Postgres cluster")
241

Callers 1

Calls 15

submitRBACCredentialsMethod · 0.95
addClusterMethod · 0.95
InsertMethod · 0.95
NameFromMetaFunction · 0.92
DiffFunction · 0.92
NeedsRepairMethod · 0.80
UnlockMethod · 0.80
LockMethod · 0.80
FormatMethod · 0.80
SyncMethod · 0.80

Tested by

no test coverage detected