Class: Pinot::ClientConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/pinot/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(broker_list: [], http_timeout: nil, query_timeout_ms: nil, extra_http_header: {}, use_multistage_engine: false, controller_config: nil, logger: nil, tls_config: nil, grpc_config: nil, zookeeper_config: nil, max_retries: 0, retry_interval_ms: 200, pool_size: nil, keep_alive_timeout: nil, circuit_breaker_enabled: false, circuit_breaker_threshold: 5, circuit_breaker_timeout: 30) ⇒ ClientConfig

Returns a new instance of ClientConfig.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/pinot/config.rb', line 34

def initialize(
  broker_list: [],
  http_timeout: nil,
  query_timeout_ms: nil,
  extra_http_header: {},
  use_multistage_engine: false,
  controller_config: nil,
  logger: nil,
  tls_config: nil,
  grpc_config: nil,
  zookeeper_config: nil,
  max_retries: 0,
  retry_interval_ms: 200,
  pool_size: nil,
  keep_alive_timeout: nil,
  circuit_breaker_enabled: false,
  circuit_breaker_threshold: 5,
  circuit_breaker_timeout: 30
)
  @broker_list = broker_list
  @http_timeout = http_timeout
  @query_timeout_ms = query_timeout_ms
  @extra_http_header = extra_http_header
  @use_multistage_engine = use_multistage_engine
  @controller_config = controller_config
  @logger = logger
  @tls_config = tls_config
  @grpc_config = grpc_config
  @zookeeper_config = zookeeper_config
  @max_retries = max_retries
  @retry_interval_ms = retry_interval_ms
  @pool_size = pool_size
  @keep_alive_timeout = keep_alive_timeout
  @circuit_breaker_enabled = circuit_breaker_enabled
  @circuit_breaker_threshold = circuit_breaker_threshold
  @circuit_breaker_timeout = circuit_breaker_timeout
end

Instance Attribute Details

#broker_listObject

Returns the value of attribute broker_list.



23
24
25
# File 'lib/pinot/config.rb', line 23

def broker_list
  @broker_list
end

#circuit_breaker_enabledObject

Returns the value of attribute circuit_breaker_enabled.



23
24
25
# File 'lib/pinot/config.rb', line 23

def circuit_breaker_enabled
  @circuit_breaker_enabled
end

#circuit_breaker_thresholdObject

Returns the value of attribute circuit_breaker_threshold.



23
24
25
# File 'lib/pinot/config.rb', line 23

def circuit_breaker_threshold
  @circuit_breaker_threshold
end

#circuit_breaker_timeoutObject

Returns the value of attribute circuit_breaker_timeout.



23
24
25
# File 'lib/pinot/config.rb', line 23

def circuit_breaker_timeout
  @circuit_breaker_timeout
end

#controller_configObject

Returns the value of attribute controller_config.



23
24
25
# File 'lib/pinot/config.rb', line 23

def controller_config
  @controller_config
end

#extra_http_headerObject

Returns the value of attribute extra_http_header.



23
24
25
# File 'lib/pinot/config.rb', line 23

def extra_http_header
  @extra_http_header
end

#grpc_configObject

Returns the value of attribute grpc_config.



23
24
25
# File 'lib/pinot/config.rb', line 23

def grpc_config
  @grpc_config
end

#http_timeoutObject

Returns the value of attribute http_timeout.



23
24
25
# File 'lib/pinot/config.rb', line 23

def http_timeout
  @http_timeout
end

#keep_alive_timeoutObject

Returns the value of attribute keep_alive_timeout.



23
24
25
# File 'lib/pinot/config.rb', line 23

def keep_alive_timeout
  @keep_alive_timeout
end

#loggerObject

Returns the value of attribute logger.



23
24
25
# File 'lib/pinot/config.rb', line 23

def logger
  @logger
end

#max_retriesObject

Returns the value of attribute max_retries.



23
24
25
# File 'lib/pinot/config.rb', line 23

def max_retries
  @max_retries
end

#pool_sizeObject

Returns the value of attribute pool_size.



23
24
25
# File 'lib/pinot/config.rb', line 23

def pool_size
  @pool_size
end

#query_timeout_msObject

Returns the value of attribute query_timeout_ms.



23
24
25
# File 'lib/pinot/config.rb', line 23

def query_timeout_ms
  @query_timeout_ms
end

#retry_interval_msObject

Returns the value of attribute retry_interval_ms.



23
24
25
# File 'lib/pinot/config.rb', line 23

def retry_interval_ms
  @retry_interval_ms
end

#tls_configObject

Returns the value of attribute tls_config.



23
24
25
# File 'lib/pinot/config.rb', line 23

def tls_config
  @tls_config
end

#use_multistage_engineObject

Returns the value of attribute use_multistage_engine.



23
24
25
# File 'lib/pinot/config.rb', line 23

def use_multistage_engine
  @use_multistage_engine
end

#zookeeper_configObject

Returns the value of attribute zookeeper_config.



23
24
25
# File 'lib/pinot/config.rb', line 23

def zookeeper_config
  @zookeeper_config
end

Instance Method Details

#validate!Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/pinot/config.rb', line 72

def validate!
  sources = [
    !broker_list.empty?,
    !controller_config.nil?,
    !zookeeper_config.nil?,
    !grpc_config.nil?
  ].count(true)

  if sources == 0
    raise ConfigurationError, "ClientConfig requires at least one of: broker_list, controller_config, zookeeper_config, or grpc_config"
  end

  if !http_timeout.nil? && http_timeout <= 0
    raise ConfigurationError, "http_timeout must be positive, got: #{http_timeout}"
  end

  if !query_timeout_ms.nil? && query_timeout_ms <= 0
    raise ConfigurationError, "query_timeout_ms must be positive, got: #{query_timeout_ms}"
  end

  if !pool_size.nil? && pool_size < 1
    raise ConfigurationError, "pool_size must be at least 1, got: #{pool_size}"
  end

  if !keep_alive_timeout.nil? && keep_alive_timeout <= 0
    raise ConfigurationError, "keep_alive_timeout must be positive, got: #{keep_alive_timeout}"
  end

  self
end