mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-10-31 22:18:52 +00:00
start the job scheduler separately to the worker pools
This commit is contained in:
parent
092c9819b2
commit
f94c201e94
2 changed files with 18 additions and 5 deletions
|
@ -198,6 +198,10 @@ var Start action.GTSAction = func(ctx context.Context) error {
|
||||||
return fmt.Errorf("error starting list timeline: %s", err)
|
return fmt.Errorf("error starting list timeline: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Start the job scheduler
|
||||||
|
// (this is required for cleaner).
|
||||||
|
state.Workers.StartScheduler()
|
||||||
|
|
||||||
// Create a media cleaner
|
// Create a media cleaner
|
||||||
// using the given state.
|
// using the given state.
|
||||||
cleaner := cleaner.New(&state)
|
cleaner := cleaner.New(&state)
|
||||||
|
@ -214,10 +218,17 @@ var Start action.GTSAction = func(ctx context.Context) error {
|
||||||
emailSender,
|
emailSender,
|
||||||
)
|
)
|
||||||
|
|
||||||
// Set state client / federator synchronous processing functions.
|
// Initialize the specialized workers.
|
||||||
|
state.Workers.Client.Init(messages.ClientMsgIndices())
|
||||||
|
state.Workers.Federator.Init(messages.FederatorMsgIndices())
|
||||||
|
state.Workers.Delivery.Init(client)
|
||||||
state.Workers.Client.Process = processor.Workers().ProcessFromClientAPI
|
state.Workers.Client.Process = processor.Workers().ProcessFromClientAPI
|
||||||
state.Workers.Federator.Process = processor.Workers().ProcessFromFediAPI
|
state.Workers.Federator.Process = processor.Workers().ProcessFromFediAPI
|
||||||
|
|
||||||
|
// Initialize workers.
|
||||||
|
state.Workers.Start()
|
||||||
|
defer state.Workers.Stop()
|
||||||
|
|
||||||
// Schedule tasks for all existing poll expiries.
|
// Schedule tasks for all existing poll expiries.
|
||||||
if err := processor.Polls().ScheduleAll(ctx); err != nil {
|
if err := processor.Polls().ScheduleAll(ctx); err != nil {
|
||||||
return fmt.Errorf("error scheduling poll expiries: %w", err)
|
return fmt.Errorf("error scheduling poll expiries: %w", err)
|
||||||
|
|
|
@ -57,14 +57,16 @@ type Workers struct {
|
||||||
_ nocopy
|
_ nocopy
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start will start all of the contained
|
// StartScheduler starts the job scheduler.
|
||||||
// worker pools (and global scheduler).
|
func (w *Workers) StartScheduler() {
|
||||||
|
tryUntil("starting scheduler", 5, w.Scheduler.Start)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start will start contained worker pools.
|
||||||
func (w *Workers) Start() {
|
func (w *Workers) Start() {
|
||||||
// Get currently set GOMAXPROCS.
|
// Get currently set GOMAXPROCS.
|
||||||
maxprocs := runtime.GOMAXPROCS(0)
|
maxprocs := runtime.GOMAXPROCS(0)
|
||||||
|
|
||||||
tryUntil("starting scheduler", 5, w.Scheduler.Start)
|
|
||||||
|
|
||||||
tryUntil("start delivery workerpool", 5, func() bool {
|
tryUntil("start delivery workerpool", 5, func() bool {
|
||||||
n := config.GetAdvancedSenderMultiplier()
|
n := config.GetAdvancedSenderMultiplier()
|
||||||
if n < 1 {
|
if n < 1 {
|
||||||
|
|
Loading…
Reference in a new issue