Created
May 21, 2018 17:01
-
-
Save nrb/73d54245288d647354827e5862594a82 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| func (br *backupService) UploadBackup(bucket, backupName string, metadata, backup, log io.Reader) error { | |
| // Uploading the log file is best-effort; if it fails, we log the error but it doesn't impact the | |
| // backup's status. | |
| logKey := getBackupLogKey(backupName, backupName) | |
| if err := br.seekAndPutObject(bucket, logKey, log); err != nil { | |
| br.logger.WithError(err).WithFields(logrus.Fields{ | |
| "bucket": bucket, | |
| "key": logKey, | |
| }).Error("Error uploading log file") | |
| } | |
| br.logger.Info("Completed log file upload") | |
| if metadata == nil { | |
| // If we don't have metadata, something failed, and there's no point in continuing. An object | |
| // storage bucket that is missing the metadata file can't be restored, nor can its logs be | |
| // viewed. | |
| br.logger.Debug("Metadata was nil, returning early") | |
| return nil | |
| } | |
| // upload metadata file | |
| metadataKey := getMetadataKey(backupName) | |
| if err := br.seekAndPutObject(bucket, metadataKey, metadata); err != nil { | |
| // failure to upload metadata file is a hard-stop | |
| br.logger.Info("Failed to upload metadata file") | |
| return err | |
| } | |
| br.logger.Info("Completed metadata upload") | |
| if backup != nil { | |
| // upload tar file | |
| if err := br.seekAndPutObject(bucket, getBackupContentsKey(backupName, backupName), backup); err != nil { | |
| // try to delete the metadata file since the data upload failed | |
| deleteErr := br.objectStore.DeleteObject(bucket, metadataKey) | |
| br.logger.Info("Failed to upload backup") | |
| return kerrors.NewAggregate([]error{err, deleteErr}) | |
| } | |
| br.logger.Info("Completed backup upload") | |
| } | |
| return nil | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment