X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9828e9218084856240fdeafa2d388d8bf322e655..09cbdc3074b3f1e69c9c537875146f6da0a6ed8f:/lib/lsf/dispatch.go diff --git a/lib/lsf/dispatch.go b/lib/lsf/dispatch.go index d362f66d14..d1408d23cb 100644 --- a/lib/lsf/dispatch.go +++ b/lib/lsf/dispatch.go @@ -18,6 +18,8 @@ import ( "time" "git.arvados.org/arvados.git/lib/cmd" + "git.arvados.org/arvados.git/lib/controller/dblock" + "git.arvados.org/arvados.git/lib/ctrlctx" "git.arvados.org/arvados.git/lib/dispatchcloud" "git.arvados.org/arvados.git/lib/service" "git.arvados.org/arvados.git/sdk/go/arvados" @@ -58,6 +60,7 @@ type dispatcher struct { Registry *prometheus.Registry logger logrus.FieldLogger + dbConnector ctrlctx.DBConnector lsfcli lsfcli lsfqueue lsfqueue arvDispatcher *dispatch.Dispatcher @@ -73,7 +76,9 @@ type dispatcher struct { func (disp *dispatcher) Start() { disp.initOnce.Do(func() { disp.init() + dblock.Dispatch.Lock(context.Background(), disp.dbConnector.GetDB) go func() { + defer dblock.Dispatch.Unlock() disp.checkLsfQueueForOrphans() err := disp.arvDispatcher.Run(disp.Context) if err != nil { @@ -125,6 +130,7 @@ func (disp *dispatcher) init() { lsfcli: &disp.lsfcli, } disp.ArvClient.AuthToken = disp.AuthToken + disp.dbConnector = ctrlctx.DBConnector{PostgreSQL: disp.Cluster.PostgreSQL} disp.stop = make(chan struct{}, 1) disp.stopped = make(chan struct{})