diff options
Diffstat (limited to 'internal/workers/workers.go')
-rw-r--r-- | internal/workers/workers.go | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/internal/workers/workers.go b/internal/workers/workers.go index 77b3065ce..b29d115aa 100644 --- a/internal/workers/workers.go +++ b/internal/workers/workers.go @@ -19,20 +19,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. package workers import ( + "context" "log" "runtime" "codeberg.org/gruf/go-runners" "codeberg.org/gruf/go-sched" + "github.com/superseriousbusiness/gotosocial/internal/messages" ) type Workers struct { // Main task scheduler instance. Scheduler sched.Scheduler - // Processor / federator worker pools. - // ClientAPI runners.WorkerPool - // Federator runners.WorkerPool + // ClientAPI / federator worker pools. + ClientAPI runners.WorkerPool + Federator runners.WorkerPool + + // Enqueue functions for clientAPI / federator worker pools, + // these are pointers to Processor{}.Enqueue___() msg functions. + // This prevents dependency cycling as Processor depends on Workers. + EnqueueClientAPI func(context.Context, messages.FromClientAPI) + EnqueueFederator func(context.Context, messages.FromFederator) // Media manager worker pools. Media runners.WorkerPool @@ -50,13 +58,13 @@ func (w *Workers) Start() { return w.Scheduler.Start(nil) }) - // tryUntil("starting client API workerpool", 5, func() bool { - // return w.ClientAPI.Start(4*maxprocs, 400*maxprocs) - // }) + tryUntil("starting client API workerpool", 5, func() bool { + return w.ClientAPI.Start(4*maxprocs, 400*maxprocs) + }) - // tryUntil("starting federator workerpool", 5, func() bool { - // return w.Federator.Start(4*maxprocs, 400*maxprocs) - // }) + tryUntil("starting federator workerpool", 5, func() bool { + return w.Federator.Start(4*maxprocs, 400*maxprocs) + }) tryUntil("starting media workerpool", 5, func() bool { return w.Media.Start(8*maxprocs, 80*maxprocs) @@ -66,8 +74,8 @@ func (w *Workers) Start() { // Stop will stop all of the contained worker pools (and global scheduler). func (w *Workers) Stop() { tryUntil("stopping scheduler", 5, w.Scheduler.Stop) - // tryUntil("stopping client API workerpool", 5, w.ClientAPI.Stop) - // tryUntil("stopping federator workerpool", 5, w.Federator.Stop) + tryUntil("stopping client API workerpool", 5, w.ClientAPI.Stop) + tryUntil("stopping federator workerpool", 5, w.Federator.Stop) tryUntil("stopping media workerpool", 5, w.Media.Stop) } |