From ca36779a8f04767a8a2ab0ea5e9ff8994aa5e131 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Wed, 8 Oct 2008 21:22:15 +0000 Subject: Add error handling and retries for database write problems (Resolves Ticket #602) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4935 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Plugins/DBStats.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/lib/Server/Plugins/DBStats.py') diff --git a/src/lib/Server/Plugins/DBStats.py b/src/lib/Server/Plugins/DBStats.py index a9686533e..8f28e8c2d 100644 --- a/src/lib/Server/Plugins/DBStats.py +++ b/src/lib/Server/Plugins/DBStats.py @@ -34,8 +34,16 @@ class DBStats(Bcfg2.Server.Plugin.StatisticsPlugin): # FIXME need to build a metadata interface to expose a list of clients # FIXME Server processing the request should be mentionned here start = time.time() - Bcfg2.Server.Reports.importscript.load_stats( - self.core.metadata.clientdata, container, 0, True) + for i in [1,2,3]: + try: + Bcfg2.Server.Reports.importscript.load_stats( + self.core.metadata.clientdata, container, 0, True) + break + except: + logger.error("DBStats: Failed to write data to database due to lock; retrying") + if i == 3: + logger.error("DBStats: Retry limit failed; aborting operation") + return logger.info("Imported data in the reason fast path in %s second" % (time.time() - start)) def GetExtra(self, client): -- cgit v1.2.3-1-g7c22