suppression should be stored only once
Suppression should be run unique.
Currently the same bug hash can be stored multiple times for suppression. 
This can happen if the bug was suppressed in the suppress file before and suppressed later in the source file too.
After the suppress information from the suppress file is stored to the database and suppress information is available in the source file too, the source file suppress message should overwrite the already stored suppress information in the database.
diff --git a/storage_server/report_server.py b/storage_server/report_server.py
index 0a05106d..e77ee417 100644
--- a/storage_server/report_server.py
+++ b/storage_server/report_server.py
@@ -526,13 +526,19 @@ class CheckerReportHandler(object):
         try:
             suppressList = []
             for bug_to_suppress in bugs_to_suppress:
-                suppress_bug = SuppressBug(run_id,
-                                           bug_to_suppress.bug_hash,
-                                           bug_to_suppress.file_name,
-                                           bug_to_suppress.comment)
-                suppressList.append(suppress_bug)
+                res = self.session.query(SuppressBug) \\
+                    .filter(SuppressBug.hash == bug_to_suppress.bug_hash,
+                            SuppressBug.run_id == run_id,
+                            SuppressBug.file_name == bug_to_suppress.file_name)
+
+                if res.one_or_none():
+                    res.update({'comment': bug_to_suppress.comment})
+                else:
+                    self.session.add(SuppressBug(run_id,
+                                                 bug_to_suppress.bug_hash,
+                                                 bug_to_suppress.file_name,
+                                                 bug_to_suppress.comment))
 
-            self.session.bulk_save_objects(suppressList)
             self.session.commit()
 
         except Exception as ex:
['storage_server/report_server.py']