requires that sess.stateMu is held
( clientMetadata *engine.ClientMetadata, sess *daggerSession, failureCleanups *cleanups.Cleanups, )
| 312 | |
| 313 | // requires that sess.stateMu is held |
| 314 | func (srv *Server) initializeDaggerSession( |
| 315 | clientMetadata *engine.ClientMetadata, |
| 316 | sess *daggerSession, |
| 317 | failureCleanups *cleanups.Cleanups, |
| 318 | ) error { |
| 319 | slog.Info("initializing new session", "session", clientMetadata.SessionID) |
| 320 | defer slog.Debug("initialized new session", "session", clientMetadata.SessionID) |
| 321 | |
| 322 | sess.sessionID = clientMetadata.SessionID |
| 323 | sess.mainClientCallerID = clientMetadata.ClientID |
| 324 | sess.clients = map[string]*daggerClient{} |
| 325 | sess.attachables = newSessionAttachableManager() |
| 326 | sess.endpoints = map[string]http.Handler{} |
| 327 | sess.closingCtx, sess.cancelClosing = context.WithCancelCause(context.Background()) |
| 328 | sess.shutdownCh = make(chan struct{}) |
| 329 | sess.services = core.NewServices() |
| 330 | sess.authProvider = auth.NewRegistryAuthProvider() |
| 331 | sess.resolver = serverresolver.New(serverresolver.Opts{ |
| 332 | Hosts: srv.registryHosts, |
| 333 | Auth: serverresolver.NewSessionAuthSource( |
| 334 | sess.authProvider, |
| 335 | func(ctx context.Context) (*grpc.ClientConn, error) { |
| 336 | return srv.sessionMainClientConn(ctx, sess) |
| 337 | }, |
| 338 | ), |
| 339 | ContentStore: srv.contentStore, |
| 340 | LeaseManager: srv.leaseManager, |
| 341 | }) |
| 342 | failureCleanups.Add("close session resolver", sess.resolver.Close) |
| 343 | sess.containers = map[bkgw.Container]struct{}{} |
| 344 | sess.dagqlCond = sync.NewCond(&sess.dagqlMu) |
| 345 | sess.telemetryPubSub = srv.telemetryPubSub |
| 346 | sess.interactive = clientMetadata.Interactive |
| 347 | sess.interactiveCommand = clientMetadata.InteractiveCommand |
| 348 | sess.allowedLLMModules = clientMetadata.AllowedLLMModules |
| 349 | |
| 350 | sess.analytics = analytics.New(analytics.Config{ |
| 351 | DoNotTrack: clientMetadata.DoNotTrack || analytics.DoNotTrack(), |
| 352 | Labels: enginetel.NewLabels(clientMetadata.Labels, nil, nil). |
| 353 | WithEngineLabel(srv.engineName). |
| 354 | WithServerLabels( |
| 355 | engine.Version, |
| 356 | runtime.GOOS, |
| 357 | runtime.GOARCH, |
| 358 | false, |
| 359 | ), |
| 360 | }) |
| 361 | failureCleanups.Add("close session analytics", sess.analytics.Close) |
| 362 | |
| 363 | sess.state = sessionStateInitialized |
| 364 | return nil |
| 365 | } |
| 366 | |
| 367 | var errSessionClosing = errors.New("session is closing") |
| 368 |
no test coverage detected