MCPcopy Index your code
hub / github.com/cloudreve/cloudreve / Start

Method Start

application/application.go:69–180  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

67}
68
69func (s *server) Start() error {
70 // Debug 关闭时,切换为生产模式
71 if !s.config.System().Debug {
72 gin.SetMode(gin.ReleaseMode)
73 }
74
75 s.kv = s.dep.KV()
76 // delete all cached settings
77 _ = s.kv.Delete(setting.KvSettingPrefix)
78 if memKv, ok := s.kv.(*cache.MemoStore); ok {
79 memKv.GarbageCollect(s.logger)
80 }
81
82 // TODO: make sure redis is connected in dep before user traffic.
83 if s.config.System().Mode == conf.MasterMode {
84 s.dbClient = s.dep.DBClient()
85 // TODO: make sure all dep is initialized before server start.
86 s.dep.LockSystem()
87 s.dep.UAParser()
88
89 // Initialize OneDrive credentials
90 credentials, err := onedrive.RetrieveOneDriveCredentials(context.Background(), s.dep.StoragePolicyClient())
91 if err != nil {
92 return fmt.Errorf("faield to retrieve OneDrive credentials for CredManager: %w", err)
93 }
94 if err := s.dep.CredManager().Upsert(context.Background(), credentials...); err != nil {
95 return fmt.Errorf("failed to upsert OneDrive credentials to CredManager: %w", err)
96 }
97 crontab.Register(setting.CronTypeOauthCredRefresh, func(ctx context.Context) {
98 dep := dependency.FromContext(ctx)
99 cred := dep.CredManager()
100 cred.RefreshAll(ctx)
101 })
102
103 // Initialize email queue before user traffic starts.
104 _ = s.dep.EmailClient(context.Background())
105
106 // Start all queues
107 s.dep.MediaMetaQueue(context.Background()).Start()
108 s.dep.EntityRecycleQueue(context.Background()).Start()
109 s.dep.IoIntenseQueue(context.Background()).Start()
110 s.dep.RemoteDownloadQueue(context.Background()).Start()
111
112 // Start cron jobs
113 c, err := crontab.NewCron(context.Background(), s.dep)
114 if err != nil {
115 return err
116 }
117 c.Start()
118
119 // Start node pool
120 if _, err := s.dep.NodePool(context.Background()); err != nil {
121 return err
122 }
123 } else {
124 s.dep.SlaveQueue(context.Background()).Start()
125 }
126 s.dep.ThumbQueue(context.Background()).Start()

Callers

nothing calls this directly

Calls 15

runUnixMethod · 0.95
RegisterFunction · 0.92
FromContextFunction · 0.92
NewCronFunction · 0.92
InitRouterFunction · 0.92
GarbageCollectMethod · 0.80
SystemMethod · 0.65
KVMethod · 0.65
DeleteMethod · 0.65
DBClientMethod · 0.65
LockSystemMethod · 0.65

Tested by

no test coverage detected