bdr: Don't try to handle UPDATE/UPDATE conflicts in UDR.
authorPetr Jelinek <pjmodos@pjmodos.net>
Thu, 23 Oct 2014 07:04:13 +0000 (09:04 +0200)
committerPetr Jelinek <pjmodos@pjmodos.net>
Fri, 21 Nov 2014 17:21:56 +0000 (18:21 +0100)
bdr_apply.c

index 01a247b1cf3b002f1494d28ea4df8c249177f75b..b76f2cc2f47f39598fb18e9836b313406d344c23 100644 (file)
@@ -1113,7 +1113,7 @@ bdr_conflict_last_update_wins(RepNodeId local_node_id,
 
 static void
 bdr_conflict_default_apply_resolve(bool *perform_update, bool *log_update,
-                          BdrConflictResolution *resolution)
+                                  BdrConflictResolution *resolution)
 {
    *perform_update = bdr_conflict_default_apply;
    /* For UDR conflicts are never expected so they should always be logged. */
@@ -1170,6 +1170,19 @@ check_apply_update(BdrConflictType conflict_type,
        return;
    }
 
+#ifdef BUILDING_UDR
+   /*
+    * In UDR we can't correctly detect UPDATE/UPDATE conflicts as we don't
+    * have origin_id which means every UPDATE looks like conflict so let's
+    * just ignore them here.
+    */
+   if (conflict_type == BdrConflictType_UpdateUpdate)
+   {
+       *perform_update = true;
+       return;
+   }
+#endif
+
    /*
     * Decide whether to keep the remote or local tuple based on a conflict
     * trigger (if defined) or last-update-wins.