Skip to content
This repository was archived by the owner on Jan 1, 2024. It is now read-only.

Commit 3b6a018

Browse files
authored
Make all retries and delays configurable (#344)
Closes #186 In some tasks we have to specify number of retries and delays between to wait for some operation to finish. Seems that this constants should be moved to defaults and also these constants should be overridable by extra-vars. Also in some tasks timeouts are used instead retries and delays. Now all retries and delays are configurable and some timeouts deprecated.
1 parent 89daacd commit 3b6a018

File tree

13 files changed

+119
-25
lines changed

13 files changed

+119
-25
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ README.md to use the newest tag with new release
2626
- `cartridge_not_save_cookie_in_app_config` variable that allows to disable persisting cluster
2727
cookie in the application configuration file
2828
- `patch_instance_in_runtime` step to update instance parameters in runtime
29+
- Variables `bootstrap_vshard_retries`, `bootstrap_vshard_delay`, `connect_to_membership_retries`,
30+
`connect_to_membership_delay` to change hardcoded values
31+
32+
### Changed
33+
34+
- Timeout `instance_start_timeout` (to check that all instances become started)
35+
deprecated and replaced with `instance_start_retries` and `instance_start_delay`
36+
- Timeout `instance_discover_buckets_timeout` (to check that instances discover buckets)
37+
deprecated and replaced with `instance_discover_buckets_retries` and `instance_discover_buckets_delay`
2938

3039
## [1.9.0] - 2021-04-30
3140

defaults/main.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,15 @@ restarted: null
103103
expelled: false
104104
stateboard: false
105105

106+
instance_start_timeout: null # DEPRECATED
107+
instance_start_retries: 10
108+
instance_start_delay: 5
109+
106110
cartridge_wait_buckets_discovery: true
107-
instance_start_timeout: 60
108-
instance_discover_buckets_timeout: 60
111+
112+
instance_discover_buckets_timeout: null # DEPRECATED
113+
instance_discover_buckets_retries: 20
114+
instance_discover_buckets_delay: 5
109115

110116
allowed_members_states: ['RolesConfigured']
111117
wait_members_alive_retries: 10
@@ -142,6 +148,12 @@ cartridge_failover: null # DEPRECATED
142148
cartridge_failover_params: null
143149
cartridge_failover_promote_params: null
144150

151+
connect_to_membership_retries: 3
152+
connect_to_membership_delay: 5
153+
154+
bootstrap_vshard_retries: 3
155+
bootstrap_vshard_delay: 5
156+
145157
allow_warning_issues: false
146158
show_issues: true
147159
wait_cluster_has_no_issues_retries: 10

doc/scenario.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,9 @@ Input facts (set by config):
464464

465465
- `expelled` - indicates if instance must be expelled from topology;
466466
- `stateboard` - indicates that the instance is a stateboard;
467-
- `instance_start_timeout` - time in seconds to wait for instance to be started;
467+
- `instance_start_retries` - retries to check that all instances become started;
468+
- `instance_start_delay` - delay before retry to check that all instances become started;
469+
- [DEPRECATED] `instance_start_timeout` - time in seconds to wait for instance to be started;
468470
- `cartridge_wait_buckets_discovery` - indicates if routers should wait for buckets discovery after vshard bootstrap.
469471

470472
### connect_to_membership
@@ -480,7 +482,9 @@ Input facts (set by config):
480482
- `expelled` - indicates if instance must be expelled from topology;
481483
- `stateboard` - indicates that the instance is a stateboard;
482484
- `cartridge_app_name` - application name;
483-
- `config` - instance configuration ([more details here](/doc/instances.md)).
485+
- `config` - instance configuration ([more details here](/doc/instances.md));
486+
- `connect_to_membership_retries` - retries to connect to membership;
487+
- `connect_to_membership_delay` - delay before retry to connect to membership.
484488

485489
Output facts:
486490

@@ -633,7 +637,11 @@ Input facts (set by config):
633637
- `expelled` - indicates if instance must be expelled from topology;
634638
- `stateboard` - indicates that the instance is a stateboard;
635639
- `cartridge_bootstrap_vshard` - indicates if vshard should be bootstrapped;
636-
- `instance_discover_buckets_timeout` - time in seconds to wait for instance to discover buckets;
640+
- `bootstrap_vshard_retries` - retries to bootstrap vshard;
641+
- `bootstrap_vshard_delay` - delay before retry to bootstrap vshard;
642+
- `instance_discover_buckets_retries` - retries to check that instances discover buckets;
643+
- `instance_discover_buckets_delay` - delay before retry to check that instances discover buckets;
644+
- [DEPRECATED] `instance_discover_buckets_timeout` - time in seconds to wait for instance to discover buckets;
637645
- `cartridge_wait_buckets_discovery` - indicates if routers should wait for buckets discovery after vshard bootstrap;
638646

639647
### configure_failover
@@ -648,8 +656,8 @@ Input facts (set by role):
648656

649657
Input facts (set by config):
650658

651-
- [DEPRECATED] `cartridge_failover` - indicates if eventual failover should be enabled or disabled;
652-
- `cartridge_failover_params` - failover parameters.
659+
- `cartridge_failover_params` - failover parameters;
660+
- [DEPRECATED] `cartridge_failover` - indicates if eventual failover should be enabled or disabled.
653661

654662
### wait_members_alive
655663

doc/variables.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,19 @@ For more details see [scenario documentation](/doc/scenario.md).
9191
* `expelled` (`boolean`, default: `false`): a boolean flag that indicates if instance must be expelled from topology;
9292
* `stateboard` (`boolean`, default: `false`): a boolean flag that indicates
9393
that the instance is a [stateboard](/doc/stateboard.md);
94-
* `instance_start_timeout` (`number`, default: 60): time in seconds to wait for instance to be started;
94+
* `instance_start_retries` (`number`, default: 10) retries to check that all instances become started;
95+
* `instance_start_delay` (`number`, default: 5): delay before retry to check that all instances become started;
96+
* [DEPRECATED] `instance_start_timeout` (`number`, default: 60): time in seconds to wait for instance to be started;
9597
* `cartridge_wait_buckets_discovery` (`boolean`, default: `true`): a boolean
9698
flag that indicates if routers should wait for buckets discovery after vshard bootstrap;
97-
* `instance_discover_buckets_timeout` (`number`, default: 60): time in seconds
99+
* `instance_discover_buckets_retries` (`number`, default: 20) retries to check that instances discover buckets;
100+
* `instance_discover_buckets_delay` (`number`, default: 5): delay before retry to check that instances discover buckets;
101+
* [DEPRECATED] `instance_discover_buckets_timeout` (`number`, default: 60): time in seconds
98102
to wait for instance to discover buckets;
99103
* `allowed_members_states` (`list-of-strings`, default: `[RolesConfigured]`):
100104
list of allowed instance states;
101-
* `wait_members_alive_retries` (`number`, default: 60) retries to check that all instances become alive;
102-
all instances become alive;
103-
* `wait_members_alive_delay` (`number`, default: 5): delay to retry instances status check;
105+
* `wait_members_alive_retries` (`number`, default: 10) retries to check that all instances become alive;
106+
* `wait_members_alive_delay` (`number`, default: 5): delay before retry to check that all instances become alive;
104107

105108
## Replicasets configuration
106109

@@ -125,8 +128,12 @@ For more details see [scenario documentation](/doc/scenario.md).
125128

126129
## Cluster configuration
127130

131+
- `connect_to_membership_retries` (`number`, default: 3): retries to connect to membership;
132+
- `connect_to_membership_delay` (`number`, default: 5): delay before retry to connect to membership;
128133
* `cartridge_bootstrap_vshard` (`boolean`, default: `false`): a boolean
129134
flag that indicates if vshard should be bootstrapped;
135+
* `bootstrap_vshard_retries` (`number`, default: 3): retries to bootstrap vshard;
136+
* `bootstrap_vshard_delay` (`number`, default: 5): delay before retry to bootstrap vshard;
130137
* `cartridge_app_config` (`dict`): application config sections to patch;
131138
* `cartridge_auth`: (`dict`): [authorization configuration](/doc/auth.md);
132139
* `cartridge_failover_params` (`dict`): [failover](/doc/failover.md) parameters;

library/cartridge_get_cached_facts.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
'cartridge_app_user',
1818
'cartridge_auth',
1919
'cartridge_bootstrap_vshard',
20+
'bootstrap_vshard_retries',
21+
'bootstrap_vshard_delay',
22+
'connect_to_membership_retries',
23+
'connect_to_membership_delay',
2024
'cartridge_runtime_params',
2125
'cartridge_cluster_cookie',
2226
'cartridge_not_save_cookie_in_app_config',
@@ -58,7 +62,11 @@
5862
'expelled',
5963
'failover_priority',
6064
'instance_discover_buckets_timeout',
65+
'instance_discover_buckets_retries',
66+
'instance_discover_buckets_delay',
6167
'instance_start_timeout',
68+
'instance_start_retries',
69+
'instance_start_delay',
6270
'replicaset_alias',
6371
'restarted',
6472
'roles',

library/cartridge_validate_config.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
'cartridge_not_save_cookie_in_app_config',
1818
'cartridge_auth',
1919
'cartridge_bootstrap_vshard',
20+
'bootstrap_vshard_retries',
21+
'bootstrap_vshard_delay',
22+
'connect_to_membership_retries',
23+
'connect_to_membership_delay',
2024
'cartridge_failover',
2125
'cartridge_failover_params',
2226
'cartridge_app_config',
@@ -96,6 +100,10 @@
96100
'cartridge_runtime_params': dict,
97101
'cartridge_defaults': dict,
98102
'cartridge_bootstrap_vshard': bool,
103+
'bootstrap_vshard_retries': int,
104+
'bootstrap_vshard_delay': int,
105+
'connect_to_membership_retries': int,
106+
'connect_to_membership_delay': int,
99107
'cartridge_wait_buckets_discovery': bool,
100108
'cartridge_failover': bool,
101109
'cartridge_app_config': dict,
@@ -109,7 +117,11 @@
109117
'stateboard': bool,
110118
'cartridge_multiversion': bool,
111119
'instance_start_timeout': int,
120+
'instance_start_retries': int,
121+
'instance_start_delay': int,
112122
'instance_discover_buckets_timeout': int,
123+
'instance_discover_buckets_retries': int,
124+
'instance_discover_buckets_delay': int,
113125
'twophase_netbox_call_timeout': int,
114126
'twophase_upload_config_timeout': int,
115127
'twophase_apply_config_timeout': int,
@@ -543,6 +555,16 @@ def validate_config(params):
543555
"Variable 'edit_topology_timeout' is deprecated since 1.9.0 and will be removed in 2.0.0. "
544556
"Use 'edit_topology_healthy_timeout' instead."
545557
)
558+
if instance_vars.get('instance_start_timeout') is not None:
559+
warnings.append(
560+
"Variable 'instance_start_timeout' is deprecated since 1.10.0 and will be removed in 2.0.0. "
561+
"Use 'instance_start_retries' and 'instance_start_delay' instead."
562+
)
563+
if instance_vars.get('instance_discover_buckets_timeout') is not None:
564+
warnings.append(
565+
"Variable 'instance_discover_buckets_timeout' is deprecated since 1.10.0 and will be removed in 2.0.0. "
566+
"Use 'instance_discover_buckets_retries' and 'instance_discover_buckets_delay' instead."
567+
)
546568

547569
# Validate types
548570
errmsg = validate_types(instance_vars)

molecule/default/hosts.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ all:
8989
advertise_uri: 'vm2:3201'
9090
http_port: 8201
9191
memtx_memory: '{{ common_memtx_memory }}'
92-
instance_start_timeout: 120
93-
instance_discover_buckets_timeout: 120
92+
instance_start_retries: 25
93+
instance_discover_buckets_retries: 25
9494

9595
core-2:
9696
config:

molecule/tasks_from/hosts.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ all:
6464
advertise_uri: 'vm1:3303'
6565
http_port: 8103
6666
memtx_memory: 268436000
67-
instance_start_timeout: 120
68-
instance_discover_buckets_timeout: 120
67+
instance_start_retries: 25
68+
instance_discover_buckets_retries: 25
6969

7070
core-2:
7171
config:

tasks/set_instance_facts.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,15 @@
6464
expelled: '{{ expelled }}'
6565
stateboard: '{{ stateboard }}'
6666

67-
cartridge_wait_buckets_discovery: '{{ cartridge_wait_buckets_discovery }}'
6867
instance_start_timeout: '{{ instance_start_timeout }}'
68+
instance_start_retries: '{{ instance_start_retries }}'
69+
instance_start_delay: '{{ instance_start_delay }}'
70+
71+
cartridge_wait_buckets_discovery: '{{ cartridge_wait_buckets_discovery }}'
72+
6973
instance_discover_buckets_timeout: '{{ instance_discover_buckets_timeout }}'
74+
instance_discover_buckets_retries: '{{ instance_discover_buckets_retries }}'
75+
instance_discover_buckets_delay: '{{ instance_discover_buckets_delay }}'
7076

7177
allowed_members_states: '{{ allowed_members_states }}'
7278
wait_members_alive_retries: '{{ wait_members_alive_retries }}'
@@ -102,6 +108,12 @@
102108
cartridge_failover_params: '{{ cartridge_failover_params }}'
103109
cartridge_failover_promote_params: '{{ cartridge_failover_promote_params }}'
104110

111+
connect_to_membership_retries: '{{ connect_to_membership_retries }}'
112+
connect_to_membership_delay: '{{ connect_to_membership_delay }}'
113+
114+
bootstrap_vshard_retries: '{{ bootstrap_vshard_retries }}'
115+
bootstrap_vshard_delay: '{{ bootstrap_vshard_delay }}'
116+
105117
allow_warning_issues: '{{ allow_warning_issues }}'
106118
show_issues: '{{ show_issues }}'
107119
wait_cluster_has_no_issues_retries: '{{ wait_cluster_has_no_issues_retries }}'

tasks/steps/bootstrap_vshard.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
apply_config_timeout: '{{ twophase_apply_config_timeout }}'
1919
register: bootstrap_vshard
2020
until: not bootstrap_vshard.failed
21-
retries: 3
22-
delay: 5
21+
retries: '{{ bootstrap_vshard_retries }}'
22+
delay: '{{ bootstrap_vshard_delay }}'
2323
run_once: true
2424
delegate_to: '{{ control_instance.name }}'
2525

@@ -30,6 +30,10 @@
3030
check_buckets_are_discovered: true
3131
register: check_instance
3232
until: not check_instance.failed
33-
retries: '{{ instance_discover_buckets_timeout // 5 }}'
34-
delay: 5
33+
retries: '{{
34+
instance_discover_buckets_timeout // instance_discover_buckets_delay
35+
if instance_discover_buckets_timeout is not none
36+
else instance_discover_buckets_retries
37+
}}'
38+
delay: '{{ instance_discover_buckets_delay }}'
3539
when: cartridge_wait_buckets_discovery

0 commit comments

Comments
 (0)