summaryrefslogtreecommitdiff
path: root/internal/workers/workers.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2023-03-01 18:26:53 +0000
committerLibravatar GitHub <noreply@github.com>2023-03-01 18:26:53 +0000
commitbaf933cb9f3e1053bdb61b90d7027efe9fad1bc2 (patch)
tree3f2a76851d58517ca3dece2bacd6aceefd8dfb96 /internal/workers/workers.go
parent[feature] Federate pinned posts (aka `featuredCollection`) in and out (#1560) (diff)
downloadgotosocial-baf933cb9f3e1053bdb61b90d7027efe9fad1bc2.tar.xz
[chore] move client/federator workerpools to Workers{} (#1575)
* replace concurrency worker pools with base models in State.Workers, update code and tests accordingly * improve code comment * change back testrig default log level * un-comment-out TestAnnounceTwice() and fix --------- Signed-off-by: kim <grufwub@gmail.com> Reviewed-by: tobi
Diffstat (limited to 'internal/workers/workers.go')
-rw-r--r--internal/workers/workers.go30
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)
}