()
| 636 | } |
| 637 | |
| 638 | func (t *App) initBackendScheduler() (services.Service, error) { |
| 639 | if t.cfg.Target == BackendScheduler { |
| 640 | t.cfg.BackendScheduler.Poll = true |
| 641 | } |
| 642 | |
| 643 | var ( |
| 644 | err error |
| 645 | reader backend.RawReader |
| 646 | writer backend.RawWriter |
| 647 | ) |
| 648 | |
| 649 | switch t.cfg.StorageConfig.Trace.Backend { |
| 650 | case backend.Local: |
| 651 | reader, writer, _, err = local.New(t.cfg.StorageConfig.Trace.Local) |
| 652 | case backend.GCS: |
| 653 | reader, writer, _, err = gcs.New(t.cfg.StorageConfig.Trace.GCS) |
| 654 | case backend.S3: |
| 655 | reader, writer, _, err = s3.New(t.cfg.StorageConfig.Trace.S3) |
| 656 | case backend.Azure: |
| 657 | reader, writer, _, err = azure.New(t.cfg.StorageConfig.Trace.Azure) |
| 658 | default: |
| 659 | err = fmt.Errorf("unknown backend %s", t.cfg.StorageConfig.Trace.Backend) |
| 660 | } |
| 661 | |
| 662 | if err != nil { |
| 663 | return nil, fmt.Errorf("failed to initialize backendscheduler reader/writer: %w", err) |
| 664 | } |
| 665 | |
| 666 | scheduler, err := backendscheduler.New(t.cfg.BackendScheduler, t.store, t.Overrides, reader, writer) |
| 667 | if err != nil { |
| 668 | return nil, fmt.Errorf("failed to create backend scheduler: %w", err) |
| 669 | } |
| 670 | |
| 671 | // Register the GRPC service |
| 672 | tempopb.RegisterBackendSchedulerServer(t.Server.GRPC(), scheduler) |
| 673 | |
| 674 | t.Server.HTTPRouter().Path("/status/backendscheduler").HandlerFunc(scheduler.StatusHandler) |
| 675 | |
| 676 | t.backendScheduler = scheduler |
| 677 | |
| 678 | return scheduler, nil |
| 679 | } |
| 680 | |
| 681 | func (t *App) initBackendWorker() (services.Service, error) { |
| 682 | if IsSingleBinary(t.cfg.Target) && t.cfg.BackendWorker.BackendSchedulerAddr == "" { |
nothing calls this directly
no test coverage detected