(ctx context.Context, cancel context.CancelFunc, folder storage.Folder)
| 551 | } |
| 552 | |
| 553 | func RunOrReuseProxy(ctx context.Context, cancel context.CancelFunc, folder storage.Folder) (*LockWrapper, error) { |
| 554 | bs, err := blob.NewServer(folder) |
| 555 | if err != nil { |
| 556 | return nil, xerrors.Errorf("proxy create error: %v", err) |
| 557 | } |
| 558 | reuse, _, err := conf.GetBoolSetting(conf.SQLServerReuseProxy) |
| 559 | if err != nil { |
| 560 | return nil, err |
| 561 | } |
| 562 | if reuse { |
| 563 | return &LockWrapper{nil}, bs.WaitReady(ctx, blob.ProxyStartTimeout) |
| 564 | } |
| 565 | lock, err := bs.AcquireLock() |
| 566 | if err != nil { |
| 567 | return nil, err |
| 568 | } |
| 569 | |
| 570 | err = bs.RunBackground(ctx, cancel) |
| 571 | if err != nil { |
| 572 | tracelog.ErrorLogger.PrintOnError(lock.Close()) |
| 573 | return nil, xerrors.Errorf("proxy run error: %v", err) |
| 574 | } |
| 575 | return &LockWrapper{lock}, nil |
| 576 | } |
| 577 | |
| 578 | func GetDBRestoreLSN(db *sql.DB, databaseName string) (string, error) { |
| 579 | query := `SELECT MAX(redo_start_lsn) |
no test coverage detected