]> jfr.im git - irc/rizon/acid.git/commitdiff
Don't abort all object commits if one fails
authorAdam <redacted>
Wed, 15 Oct 2014 22:13:44 +0000 (18:13 -0400)
committerAdam <redacted>
Wed, 15 Oct 2014 22:13:44 +0000 (18:13 -0400)
pyva/pyva/src/main/python/pseudoclient/collection.py

index dd53e38bbcab77bee8d90f64964f700d7199e9ff..e362e4dfa2339234063fff3a763c2b26048aefd7 100644 (file)
@@ -106,16 +106,20 @@ class CollectionManager(InvariantCollection):
                                self.module.elog.commit('Deleted %d %s from database.' % (len(deleted), self.name))
 
                        for e in changed:
-                               if e.id == -1:
-                                       self.cursor.execute("INSERT INTO " + self.module.name + "_" + self.name + " (name) VALUES(%s)", (e.name,))
-                                       e.id = self.cursor.lastrowid
-                               else: # delete options as we are aboue to re-flush them
-                                       self.cursor.execute("DELETE FROM " + self.module.name + "_" + self.name + "_options WHERE `id` = %s", (e.id,))
-
-                               for attr_name in self.__get_attributes(e):
-                                       attr = getattr(e, attr_name)
-                                       if attr:
-                                               self.cursor.execute("INSERT INTO " + self.module.name + "_" + self.name + "_options (id, name, value) VALUES (%s, %s, %s)", (e.id, attr_name, attr))
+                               try:
+                                       if e.id == -1:
+                                               self.cursor.execute("INSERT INTO " + self.module.name + "_" + self.name + " (name) VALUES(%s)", (e.name,))
+                                               e.id = self.cursor.lastrowid
+                                       else: # delete options as we are aboue to re-flush them
+                                               self.cursor.execute("DELETE FROM " + self.module.name + "_" + self.name + "_options WHERE `id` = %s", (e.id,))
+
+                                       for attr_name in self.__get_attributes(e):
+                                               attr = getattr(e, attr_name)
+                                               if attr:
+                                                       self.cursor.execute("INSERT INTO " + self.module.name + "_" + self.name + "_options (id, name, value) VALUES (%s, %s, %s)", (e.id, attr_name, attr))
+                               except Exception, err:
+                                       traceback.print_exc()
+                                       self.module.elog.error(self.name + ' commit failed for ' + e.name + ': @b%s@b' % err)
                        if len(changed) > 0:
                                self.module.elog.commit('Committed %d %s to database.' % (len(changed), self.name))