(dbnames []string, norecovery bool)
| 15 | ) |
| 16 | |
| 17 | func HandleLogPush(dbnames []string, norecovery bool) { |
| 18 | ctx, cancel := context.WithCancel(context.Background()) |
| 19 | signalHandler := utility.NewSignalHandler(ctx, cancel, []os.Signal{syscall.SIGINT, syscall.SIGTERM}) |
| 20 | defer func() { _ = signalHandler.Close() }() |
| 21 | |
| 22 | folder, err := internal.ConfigureStorage() |
| 23 | tracelog.ErrorLogger.FatalOnError(err) |
| 24 | |
| 25 | db, err := getSQLServerConnection() |
| 26 | tracelog.ErrorLogger.FatalfOnError("failed to connect to SQLServer: %v", err) |
| 27 | |
| 28 | dbnames, err = getDatabasesToBackup(db, dbnames) |
| 29 | tracelog.ErrorLogger.FatalOnError(err) |
| 30 | |
| 31 | tracelog.ErrorLogger.FatalfOnError("failed to list databases to backup: %v", err) |
| 32 | |
| 33 | lock, err := RunOrReuseProxy(ctx, cancel, folder.RootFolder()) |
| 34 | tracelog.ErrorLogger.FatalOnError(err) |
| 35 | defer lock.Close() |
| 36 | |
| 37 | builtinCompression := blob.UseBuiltinCompression() |
| 38 | logBackupName := generateLogBackupName() |
| 39 | err = runParallel(func(i int) error { |
| 40 | return backupSingleLog(ctx, db, logBackupName, dbnames[i], builtinCompression, norecovery) |
| 41 | }, len(dbnames), getDBConcurrency()) |
| 42 | tracelog.ErrorLogger.FatalfOnError("overall log backup failed: %v", err) |
| 43 | |
| 44 | tracelog.InfoLogger.Printf("log backup finished") |
| 45 | } |
| 46 | |
| 47 | func backupSingleLog(ctx context.Context, db *sql.DB, backupName string, dbname string, builtinCompression bool, noRecovery bool) error { |
| 48 | baseURL := getLogBackupURL(backupName, dbname) |
no test coverage detected