Merge branch '20497-updating-wgs-tutorial'
[arvados.git] / services / ws / service.go
index fb313bb799be2ccfcd68d323f5828ac12c79ba8f..9a4a239ea195952a01a3726d2e53c52c892f0e93 100644 (file)
@@ -7,7 +7,7 @@ package ws
 import (
        "context"
        "fmt"
-       "os"
+       "time"
 
        "git.arvados.org/arvados.git/lib/cmd"
        "git.arvados.org/arvados.git/lib/service"
@@ -25,18 +25,19 @@ func newHandler(ctx context.Context, cluster *arvados.Cluster, token string, reg
        if err != nil {
                return service.ErrorHandler(ctx, cluster, fmt.Errorf("error initializing client from cluster config: %s", err))
        }
+       client.Timeout = time.Minute
        eventSource := &pgEventSource{
                DataSource:   cluster.PostgreSQL.Connection.String(),
                MaxOpenConns: cluster.PostgreSQL.ConnectionPool,
                QueueSize:    cluster.API.WebsocketServerEventQueue,
                Logger:       ctxlog.FromContext(ctx),
+               Reg:          reg,
        }
+       done := make(chan struct{})
        go func() {
                eventSource.Run()
                ctxlog.FromContext(ctx).Error("event source stopped")
-               if !testMode {
-                       os.Exit(1)
-               }
+               close(done)
        }()
        eventSource.WaitReady()
        if err := eventSource.DBHealth(); err != nil {
@@ -46,7 +47,9 @@ func newHandler(ctx context.Context, cluster *arvados.Cluster, token string, reg
                cluster:        cluster,
                client:         client,
                eventSource:    eventSource,
-               newPermChecker: func() permChecker { return newPermChecker(*client) },
+               newPermChecker: func() permChecker { return newPermChecker(client) },
+               done:           done,
+               reg:            reg,
        }
        return rtr
 }