Stop stops the scheduler server.
()
| 325 | |
| 326 | // Stop stops the scheduler server. |
| 327 | func (s *Server) Stop() { |
| 328 | // Stop dynconfig. |
| 329 | if err := s.dynconfig.Stop(); err != nil { |
| 330 | logger.Errorf("stop dynconfig failed %s", err.Error()) |
| 331 | } else { |
| 332 | logger.Info("stop dynconfig closed") |
| 333 | } |
| 334 | |
| 335 | // Stop resource. |
| 336 | s.resource.Stop() |
| 337 | logger.Info("stop resource closed") |
| 338 | |
| 339 | // Stop GC. |
| 340 | s.gc.Stop() |
| 341 | logger.Info("gc closed") |
| 342 | |
| 343 | // Stop metrics server. |
| 344 | if s.metricsServer != nil { |
| 345 | if err := s.metricsServer.Shutdown(context.Background()); err != nil { |
| 346 | logger.Errorf("metrics server failed to stop: %s", err.Error()) |
| 347 | } else { |
| 348 | logger.Info("metrics server closed under request") |
| 349 | } |
| 350 | } |
| 351 | |
| 352 | // Stop announcer. |
| 353 | s.announcer.Stop() |
| 354 | logger.Info("stop announcer closed") |
| 355 | |
| 356 | // Stop manager client. |
| 357 | if s.managerClient != nil { |
| 358 | if err := s.managerClient.Close(); err != nil { |
| 359 | logger.Errorf("manager client failed to stop: %s", err.Error()) |
| 360 | } else { |
| 361 | logger.Info("manager client closed") |
| 362 | } |
| 363 | } |
| 364 | |
| 365 | // Stop GRPC server. |
| 366 | stopped := make(chan struct{}) |
| 367 | go func() { |
| 368 | s.grpcServer.GracefulStop() |
| 369 | logger.Info("grpc server closed under request") |
| 370 | close(stopped) |
| 371 | }() |
| 372 | |
| 373 | t := time.NewTimer(gracefulStopTimeout) |
| 374 | select { |
| 375 | case <-t.C: |
| 376 | s.grpcServer.Stop() |
| 377 | case <-stopped: |
| 378 | t.Stop() |
| 379 | } |
| 380 | } |