[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
This commit is contained in:
kim
2023-03-01 18:26:53 +00:00
committed by GitHub
parent 24cec4e7aa
commit baf933cb9f
130 changed files with 1037 additions and 1083 deletions

View File

@@ -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)
}