mirror of https://github.com/k3s-io/k3s.git
Fix crash on early snapshot
Don't attempt to retrieve snapshot metadata configmap if the apiserver isn't available. This could be triggered if the cron expression caused a snapshot to be triggered before the apiserver is up. Signed-off-by: Brad Davidson <brad.davidson@rancher.com>pull/5391/head
parent
9350016de8
commit
2a429aac65
|
@ -1251,21 +1251,24 @@ func (e *ETCD) Snapshot(ctx context.Context, config *config.Control) error {
|
|||
return err
|
||||
}
|
||||
|
||||
logrus.Debugf("Attempting to retrieve extra metadata from %s ConfigMap", snapshotExtraMetadataConfigMapName)
|
||||
// make sure the core.Factory is initialized before attempting to add snapshot metadata
|
||||
var extraMetadata string
|
||||
if e.config.Runtime.Core == nil {
|
||||
logrus.Debugf("Cannot retrieve extra metadata from %s ConfigMap: runtime core not ready", snapshotExtraMetadataConfigMapName)
|
||||
} else {
|
||||
logrus.Debugf("Attempting to retrieve extra metadata from %s ConfigMap", snapshotExtraMetadataConfigMapName)
|
||||
if snapshotExtraMetadataConfigMap, err := e.config.Runtime.Core.Core().V1().ConfigMap().Get(metav1.NamespaceSystem, snapshotExtraMetadataConfigMapName, metav1.GetOptions{}); err != nil {
|
||||
logrus.Debugf("Error encountered attempting to retrieve extra metadata from %s ConfigMap, error: %v", snapshotExtraMetadataConfigMapName, err)
|
||||
extraMetadata = ""
|
||||
} else {
|
||||
if m, err := json.Marshal(snapshotExtraMetadataConfigMap.Data); err != nil {
|
||||
logrus.Debugf("Error attempting to marshal extra metadata contained in %s ConfigMap, error: %v", snapshotExtraMetadataConfigMapName, err)
|
||||
extraMetadata = ""
|
||||
} else {
|
||||
logrus.Debugf("Setting extra metadata from %s ConfigMap", snapshotExtraMetadataConfigMapName)
|
||||
logrus.Tracef("Marshalled extra metadata in %s ConfigMap was: %s", snapshotExtraMetadataConfigMapName, string(m))
|
||||
extraMetadata = base64.StdEncoding.EncodeToString(m)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
endpoints := getEndpoints(e.config.Runtime)
|
||||
status, err := e.client.Status(ctx, endpoints[0])
|
||||
|
|
Loading…
Reference in New Issue