From d5e4013556c7144d347ece267c4bd3c8dc87b24f Mon Sep 17 00:00:00 2001 From: Eugene Nikanorov Date: Mon, 21 Mar 2016 20:05:47 -0700 Subject: [PATCH] Retry updating agents table in case of deadlock Updating agents table is contantious operation which can fail often if mysql backend is in multimaster mode. This could lead to agents flapping and various issues such as sporadic reschedluing, port binding failures, etc. Change-Id: Ief392f9a09d86c185dc086055d2cbc1891ff1d7f Closes-Bug: #1560724 --- neutron/db/agents_db.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/neutron/db/agents_db.py b/neutron/db/agents_db.py index 6f6f405ab0d..98b943b8768 100644 --- a/neutron/db/agents_db.py +++ b/neutron/db/agents_db.py @@ -33,6 +33,7 @@ from neutron.api.rpc.callbacks import version_manager from neutron.api.v2 import attributes from neutron.common import constants from neutron import context +from neutron.db import api as db_api from neutron.db import model_base from neutron.extensions import agent as ext_agent from neutron.extensions import availability_zone as az_ext @@ -434,6 +435,7 @@ class AgentExtRpcCallback(object): # Initialize RPC api directed to other neutron-servers self.server_versions_rpc = resources_rpc.ResourcesPushToServersRpcApi() + @db_api.retry_db_errors def report_state(self, context, **kwargs): """Report state from agent to server.