Initial server source import
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
MAX_RESULT_BUNDLE_BYTES = 64 * 1024 * 1024
|
||||
REMOTE_ASSIGNMENT_BASELINE_BYTES = 2 * 1024 * 1024
|
||||
REMOTE_ASSIGNMENT_MAX_ACTIVE = 50
|
||||
|
||||
|
||||
def validate_remote_assignment_capacity(config):
|
||||
values = {}
|
||||
fields = (
|
||||
'result_bundle_max_event_bytes',
|
||||
'remote_assignment_reserve_bytes',
|
||||
'remote_assignment_max_active',
|
||||
'result_bundle_max_total_bytes',
|
||||
'projection_backlog_max_bytes',
|
||||
'projection_backlog_headroom_bytes',
|
||||
'keycheck_queue_max_items',
|
||||
'keycheck_queue_max_bytes',
|
||||
'keycheck_candidates_per_event',
|
||||
'keycheck_candidate_bytes_per_event',
|
||||
)
|
||||
for name in fields:
|
||||
value = config.get(name)
|
||||
if type(value) is not int or value < 0:
|
||||
raise ValueError(name)
|
||||
values[name] = value
|
||||
|
||||
hard_limit = values['result_bundle_max_event_bytes']
|
||||
reserve = values['remote_assignment_reserve_bytes']
|
||||
active = values['remote_assignment_max_active']
|
||||
if not REMOTE_ASSIGNMENT_BASELINE_BYTES <= reserve <= hard_limit:
|
||||
raise ValueError('remote_assignment_reserve_bytes')
|
||||
if not REMOTE_ASSIGNMENT_BASELINE_BYTES <= hard_limit <= MAX_RESULT_BUNDLE_BYTES:
|
||||
raise ValueError('result_bundle_max_event_bytes')
|
||||
if not 1 <= active <= REMOTE_ASSIGNMENT_MAX_ACTIVE:
|
||||
raise ValueError('remote_assignment_max_active')
|
||||
|
||||
required_bytes = active * reserve
|
||||
if values['result_bundle_max_total_bytes'] < required_bytes:
|
||||
raise ValueError('result_bundle_max_total_bytes')
|
||||
projection_admission_bytes = (
|
||||
values['projection_backlog_max_bytes']
|
||||
- values['projection_backlog_headroom_bytes']
|
||||
)
|
||||
if projection_admission_bytes < required_bytes:
|
||||
raise ValueError('projection_backlog_max_bytes')
|
||||
if (
|
||||
values['keycheck_queue_max_items']
|
||||
< active * values['keycheck_candidates_per_event']
|
||||
):
|
||||
raise ValueError('keycheck_queue_max_items')
|
||||
if (
|
||||
values['keycheck_queue_max_bytes']
|
||||
< active * values['keycheck_candidate_bytes_per_event']
|
||||
):
|
||||
raise ValueError('keycheck_queue_max_bytes')
|
||||
return values
|
||||
Reference in New Issue
Block a user