bdr: Use sequencer wakeup scheduling code in the apply path as well.
authorAndres Freund <[email protected]>
Fri, 4 Apr 2014 12:21:55 +0000 (14:21 +0200)
committerAndres Freund <[email protected]>
Thu, 3 Jul 2014 15:55:23 +0000 (17:55 +0200)
contrib/bdr/bdr.h
contrib/bdr/bdr_apply.c
contrib/bdr/bdr_seq.c

index 940c64532c7fde3d3b11c0d400db451bf6215f5d..a8aebb217ba3893a5fa5f9c21bdf7904cc4fbbc8 100644 (file)
@@ -72,6 +72,7 @@ extern void bdr_sequencer_start_elections(void);
 extern void bdr_sequencer_fill_sequences(void);
 
 extern void bdr_sequencer_wakeup(void);
+extern void bdr_schedule_eoxact_sequencer_wakeup(void);
 
 extern void bdr_sequence_alloc(PG_FUNCTION_ARGS);
 extern void bdr_sequence_setval(PG_FUNCTION_ARGS);
index dd0df2e8d45a2e8c8840d09fdf6b9d1393d99265..93ede6d1a3cca613f764621b7f1902d4e894c0b4 100644 (file)
@@ -78,7 +78,6 @@ static void check_apply_update(RepNodeId local_node_id, TimestampTz ts, bool *pe
 static void do_log_update(RepNodeId local_node_id, bool apply_update, TimestampTz ts, Relation idxrel, HeapTuple old_key);
 static void do_apply_update(Relation rel, ItemPointerData oldtid, HeapTuple old_tuple, BDRTupleData new_tuple);
 
-bool       request_sequencer_wakeup = false;
 bool       started_transaction = false;
 Oid            QueuedDDLCommandsRelid = InvalidOid;
 
@@ -143,8 +142,6 @@ process_remote_begin(StringInfo s)
            pg_usleep(usec + (sec * USECS_PER_SEC));
        }
    }
-
-   request_sequencer_wakeup = false;
 }
 
 void
@@ -181,12 +178,6 @@ process_remote_commit(StringInfo s)
    CurrentResourceOwner = bdr_saved_resowner;
 
    bdr_count_commit();
-
-   if (request_sequencer_wakeup)
-   {
-       request_sequencer_wakeup = false;
-       bdr_sequencer_wakeup();
-   }
 }
 
 static void
@@ -771,7 +762,7 @@ check_sequencer_wakeup(Relation rel)
    if (reloid == BdrSequenceValuesRelid ||
        reloid == BdrSequenceElectionsRelid ||
        reloid == BdrVotesRelid)
-       request_sequencer_wakeup = true;
+       bdr_schedule_eoxact_sequencer_wakeup();
 }
 
 void
index 524b63c51e6c26ed8193039a726f565acdc8a503..47cebfbc864b83ba89f06c77a03118d83100342a 100644 (file)
@@ -56,8 +56,6 @@ typedef struct BdrSequenceValues {
    int64       end_value;
 } BdrSequenceValues;
 
-static void bdr_schedule_eoxact_sequencer_wakeup(void);
-
 /* cached relids */
 Oid    BdrSequenceValuesRelid;     /* bdr_sequence_values */
 Oid    BdrSequenceElectionsRelid;  /* bdr_sequence_elections */
@@ -539,7 +537,6 @@ bdr_sequencer_wakeup(void)
    }
 }
 
-
 static void
 bdr_sequence_xact_callback(XactEvent event, void *arg)
 {
@@ -564,7 +561,8 @@ bdr_sequence_xact_callback(XactEvent event, void *arg)
  * backend could die without causing a cluster wide restart. So we need to
  * periodically check whether we've missed wakeups.
  */
-static void bdr_schedule_eoxact_sequencer_wakeup(void)
+void
+bdr_schedule_eoxact_sequencer_wakeup(void)
 {
    static bool registered = false;