[autotest] Use RetryingAFE for RPCs to shards
RPC call can fail by timeout time to time.
If a RPC sent to a shard from a master fails, DB inconsistency can happen.
Let's use RetryingAFE when sending RPCs to shards.
BUG=chromium:496452
TEST=puppylab. Try to add/remove labels for a sharded host.
It uses RPCs that calls RetryingAFE.
Unit Tests.
frontend.afe.rpc_interface_unittest
frontend.afe.site_rpc_interface_unittest
DEPLOY=apache
Change-Id: I23853c8c0f76d31bb10493759cafdbdc6c003b3f
Reviewed-on: https://chromium-review.googlesource.com/276248
Reviewed-by: Mungyung Ryu <mkryu@google.com>
Tested-by: Mungyung Ryu <mkryu@google.com>
Commit-Queue: Mungyung Ryu <mkryu@google.com>
diff --git a/frontend/afe/rpc_utils.py b/frontend/afe/rpc_utils.py
index 569fc42..d60bd0f 100644
--- a/frontend/afe/rpc_utils.py
+++ b/frontend/afe/rpc_utils.py
@@ -17,9 +17,9 @@
from autotest_lib.client.common_lib import global_config, priorities
from autotest_lib.client.common_lib import time_utils
from autotest_lib.client.common_lib.cros.graphite import autotest_stats
-from autotest_lib.server.cros import provision
-from autotest_lib.server import frontend
from autotest_lib.server import utils as server_utils
+from autotest_lib.server.cros import provision
+from autotest_lib.server.cros.dynamic_suite import frontend_wrappers
NULL_DATETIME = datetime.datetime.max
NULL_DATE = datetime.date.max
@@ -1235,7 +1235,7 @@
@param **kwargs: Keyword arguments to pass in the rpcs.
"""
for shard_hostname in shard_hostnames:
- afe = frontend.AFE(server=shard_hostname)
+ afe = frontend_wrappers.RetryingAFE(server=shard_hostname)
afe.run(rpc_call, **kwargs)
@@ -1270,7 +1270,8 @@
@wraps(func)
def replacement(**kwargs):
if server_utils.is_shard():
- master_afe = frontend.AFE(server=get_global_afe_hostname())
- return master_afe.run(func.func_name, **kwargs)
+ afe = frontend_wrappers.RetryingAFE(
+ server=get_global_afe_hostname())
+ return afe.run(func.func_name, **kwargs)
return func(**kwargs)
return replacement