Unclear fail when AccurateNetemHTB encounter negative values
TL;DR;
When using AccurateNetemHTB, it's probable the algorithm computes a negative difference between the measured network latency and the target latency, thus leading to a fairly not clear error where the cause is burried inside dozens of lines.
Details
Encountered exception: [_AnsibleExecutionRecord(host='virtual-158-0-22', status='FAILED', task='Applying the network constraints', payload={'results': [{'rc': 1, 'stdout': 'Error: Cannot delete qdisc with handle of zero.\r\nIllegal 4294967277 time (too large)\r\nIllegal "latency"\r\n', 'stdout_lines': ['Error: Cannot delete qdisc with handle of zero.', 'Illegal 4294967277 time (too large)', 'Illegal "latency"'], 'stderr': "Warning: Permanently added '10.158.0.22' (ED25519) to the list of known hosts.\r\nShared connection to 10.158.0.22 closed.\r\n", 'stderr_lines': ["Warning: Permanently added '10.158.0.22' (ED25519) to the list of known hosts.", 'Shared connection to 10.158.0.22 closed.'], 'changed': True, 'failed': True, 'msg': 'non-zero return code', '_ansible_no_log': None, 'item': 'tc qdisc del dev ens3 root || true ; tc qdisc add dev ens3 root handle 1: htb ; tc class add dev ens3 parent 1: classid 1:1 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:1 handle 10: netem delay 46.864615ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.104 flowid 1:1 ; tc class add dev ens3 parent 1: classid 1:2 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:2 handle 11: netem delay 72.875705ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.26 flowid 1:2 ; tc class add dev ens3 parent 1: classid 1:3 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:3 handle 12: netem delay 80.85274ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.118 flowid 1:3 ; tc class add dev ens3 parent 1: classid 1:4 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:4 handle 13: netem delay 42.85221ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.103 flowid 1:4 ; tc class add dev ens3 parent 1: classid 1:5 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:5 handle 14: netem delay 1.79586ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.2 flowid 1:5 ; tc class add dev ens3 parent 1: classid 1:6 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:6 handle 15: netem delay 87.862055ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.123 flowid 1:6 ; tc class add dev ens3 parent 1: classid 1:7 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:7 handle 16: netem delay 73.858365ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.67 flowid 1:7 ; tc class add dev ens3 parent 1: classid 1:8 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:8 handle 17: netem delay 87.857685ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.96 flowid 1:8 ; tc class add dev ens3 parent 1: classid 1:9 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:9 handle 18: netem delay 83.83454ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.42 flowid 1:9 ; tc class add dev ens3 parent 1: classid 1:10 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:10 handle 19: netem delay 87.85333ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.124 flowid 1:10 ; tc class add dev ens3 parent 1: classid 1:11 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:11 handle 20: netem delay 59.858935ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.90 flowid 1:11 ; tc class add dev ens3 parent 1: classid 1:12 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:12 handle 21: netem delay 59.85794ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.115 flowid 1:12 ; tc class add dev ens3 parent 1: classid 1:13 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:13 handle 22: netem delay 44.85051ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.132 flowid 1:13 ; tc class add dev ens3 parent 1: classid 1:14 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:14 handle 23: netem delay 16.84768ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.56 flowid 1:14 ; tc class add dev ens3 parent 1: classid 1:15 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:15 handle 24: netem delay 44.849375ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.110 flowid 1:15 ; tc class add dev ens3 parent 1: classid 1:16 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:16 handle 25: netem delay 43.880255ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.24 flowid 1:16 ; tc class add dev ens3 parent 1: classid 1:17 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:17 handle 26: netem delay 80.854595ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.93 flowid 1:17 ; tc class add dev ens3 parent 1: classid 1:18 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:18 handle 27: netem delay 87.854995ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.149 flowid 1:18 ; tc class add dev ens3 parent 1: classid 1:19 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:19 handle 28: netem delay 17.85971ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.55 flowid 1:19 ; tc class add dev ens3 parent 1: classid 1:20 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:20 handle 29: netem delay 79.84649ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.92 flowid 1:20 ; tc class add dev ens3 parent 1: classid 1:21 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:21 handle 30: netem delay 87.85727ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.102 flowid 1:21 ; tc class add dev ens3 parent 1: classid 1:22 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:22 handle 31: netem delay 32.822525ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.19 flowid 1:22 ; tc class add dev ens3 parent 1: classid 1:23 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:23 handle 32: netem delay 41.865235ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.112 flowid 1:23 ; tc class add dev ens3 parent 1: classid 1:24 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:24 handle 33: netem delay 39.85593ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.36 flowid 1:24 ; tc class add dev ens3 parent 1: classid 1:25 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:25 handle 34: netem delay 22.795915ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.6 flowid 1:25 ; tc class add dev ens3 parent 1: classid 1:26 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:26 handle 35: netem delay 58.850545ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.63 flowid 1:26 ; tc class add dev ens3 parent 1: classid 1:27 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:27 handle 36: netem delay 79.856585ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.91 flowid 1:27 ; tc class add dev ens3 parent 1: classid 1:28 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:28 handle 37: netem delay 87.856175ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.100 flowid 1:28 ; tc class add dev ens3 parent 1: classid 1:29 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:29 handle 38: netem delay 52.85221ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.87 flowid 1:29 ; tc class add dev ens3 parent 1: classid 1:30 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:30 handle 39: netem delay 59.84412ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.86 flowid 1:30 ; tc class add dev ens3 parent 1: classid 1:31 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:31 handle 40: netem delay 39.84568ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.30 flowid 1:31 ; tc class add dev ens3 parent 1: classid 1:32 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:32 handle 41: netem delay 87.85316ms ; tc filter add dev ens3 parent 1: protocol ip u32 match ip dst 10.158.0.120 flowid 1:32 ; tc class add dev ens3 parent 1: classid 1:33 htb rate 1gbit ; tc qdisc add dev ens3 parent 1:33 handle 42: netem delay -0.019074999999999998ms', [...]
This looks like a minor issue, especially since in my case I should have used the parent service NetemHTB.