wmatrix: Add metrics flush to actually send them

BUG=chromium:756606
TEST=run with metrics redirected to file.

Change-Id: Iaeb6c2f552f2d4853f3c9527f54c9638f39c1d84
Reviewed-on: https://chromium-review.googlesource.com/759427
Commit-Ready: Jacob Kopczynski <jkop@chromium.org>
Tested-by: Jacob Kopczynski <jkop@chromium.org>
Reviewed-by: Prathmesh Prabhu <pprabhu@chromium.org>
Reviewed-by: Jacob Kopczynski <jkop@chromium.org>
diff --git a/src/backend/update_lib.py b/src/backend/update_lib.py
index 486dafe..cff9eb1 100644
--- a/src/backend/update_lib.py
+++ b/src/backend/update_lib.py
@@ -22,6 +22,8 @@
 from src.backend import get_schedule
 from src.models import db_interface
 
+METRICS_WHITELISTED_ERRORS = ["ImportError", "NameError", "AttributeError",
+                              "SyntaxError", "TypeError", "OSError"]
 
 def initialize_options():
     """Add shared arguments to the command-line parser and parse all args."""
@@ -137,12 +139,10 @@
     """Bucket an error between various types we care about"""
     if not error:
         return "None"
-    elif isinstance(error, (ImportError, NameError, AttributeError)):
-        return "ErrorInNamesAccessible"
-    elif isinstance(error, (SyntaxError, TypeError)):
-        return "ErrorInCodeStructure"
-    elif isinstance(error, OSError):
-        return "OSError"
+
+    error_name = error.__class__.__name__
+    if error_name in METRICS_WHITELISTED_ERRORS:
+        return error_name
     else:
         return "UnrecognizedError"
 
diff --git a/src/backend/update_rawdb.py b/src/backend/update_rawdb.py
index 634d06d..3f46407 100644
--- a/src/backend/update_rawdb.py
+++ b/src/backend/update_rawdb.py
@@ -13,6 +13,7 @@
 
 import whining
 
+from chromite.lib import metrics
 from chromite.lib import ts_mon_config
 from src import settings
 from src.backend import dbpump
@@ -43,6 +44,7 @@
         finally:
             update_lib.log_update(result, *update_lib.retrieve_dest_db_label(
                 settings.settings, DEST_DB))
+            metrics.Flush()
             # Cleanup
             src_db.close()
             dest_db.close()
diff --git a/src/backend/update_wmdb.py b/src/backend/update_wmdb.py
index f4ad3a2..4c9858a 100644
--- a/src/backend/update_wmdb.py
+++ b/src/backend/update_wmdb.py
@@ -50,6 +50,7 @@
         finally:
             update_lib.log_update(result, *update_lib.retrieve_dest_db_label(
                 settings.settings, DEST_DB))
+            metrics.Flush()
             # Cleanup
             src_db.close()
             dest_db.close()