Class: AnyCable::HealthServer

Inherits:
Object
  • Object
show all
Defined in:
lib/anycable/health_server.rb

Overview

Server for HTTP healthchecks.

Basic usage:

# create a new healthcheck server for a specified
# gRPC server lisening on the port
health_server = AnyCable::HealthServer.new(grpc_server, port)

# start health server in background
health_server.start

# stop health server
health_server.stop

Constant Summary collapse

SUCCESS_RESPONSE =
[200, "Ready"].freeze
FAILURE_RESPONSE =
[503, "Not Ready"].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(grpc_server, port:, path: "/health", logger: AnyCable.logger) ⇒ HealthServer

Returns a new instance of HealthServer.



26
27
28
29
30
31
32
# File 'lib/anycable/health_server.rb', line 26

def initialize(grpc_server, port:, path: "/health", logger: AnyCable.logger)
  @grpc_server = grpc_server
  @port = port
  @path = path
  @logger = logger
  @server = build_server
end

Instance Attribute Details

#grpc_serverObject (readonly)

Returns the value of attribute grpc_server.



24
25
26
# File 'lib/anycable/health_server.rb', line 24

def grpc_server
  @grpc_server
end

#pathObject (readonly)

Returns the value of attribute path.



24
25
26
# File 'lib/anycable/health_server.rb', line 24

def path
  @path
end

#portObject (readonly)

Returns the value of attribute port.



24
25
26
# File 'lib/anycable/health_server.rb', line 24

def port
  @port
end

#serverObject (readonly)

Returns the value of attribute server.



24
25
26
# File 'lib/anycable/health_server.rb', line 24

def server
  @server
end

Instance Method Details

#running?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/anycable/health_server.rb', line 48

def running?
  server.status == :Running
end

#startObject



34
35
36
37
38
39
40
# File 'lib/anycable/health_server.rb', line 34

def start
  return if running?

  Thread.new { server.start }

  logger.info "HTTP health server is listening on localhost:#{port} and mounted at \"#{path}\""
end

#stopObject



42
43
44
45
46
# File 'lib/anycable/health_server.rb', line 42

def stop
  return unless running?

  server.shutdown
end