~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/slave/queue_consumer.h

  • Committer: Mark Atwood
  • Date: 2011-07-06 23:13:00 UTC
  • mto: This revision was merged to the branch mainline in revision 2361.
  • Revision ID: me@mark.atwood.name-20110706231300-y49o7wu01avy1jh5
restore multi master replication

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
#include <plugin/slave/queue_thread.h>
24
24
#include <plugin/slave/sql_executor.h>
25
25
#include <drizzled/session.h>
 
26
#include <string>
26
27
 
27
28
namespace drizzled
28
29
{
41
42
  QueueConsumer() :
42
43
    QueueThread(),
43
44
    SQLExecutor("slave", "replication"),
44
 
    _check_interval(5)
 
45
    _check_interval(5),
 
46
    _ignore_errors(false)
45
47
  { }
46
48
 
47
49
  bool init();
59
61
  }
60
62
  
61
63
  /**
 
64
   * Determines if we should ignore errors from statements pulled from masters.
 
65
   */
 
66
  void setIgnoreErrors(bool value)
 
67
  {
 
68
    _ignore_errors= value;
 
69
  }
 
70
 
 
71
  /**
62
72
   * Update applier status in state table.
63
73
   *
64
74
   * @param err_msg Error message string
66
76
   */
67
77
  void setApplierState(const std::string &err_msg, bool status);
68
78
 
 
79
  void addMasterId(uint32_t id)
 
80
  {
 
81
    _master_ids.push_back(id);
 
82
  }
 
83
 
 
84
  bool processSingleMaster(const std::string &master_id);
 
85
 
69
86
private:
70
87
  typedef std::vector<uint64_t> TrxIdList;
71
88
 
72
89
  /** Number of seconds to sleep between checking queue for messages */
73
90
  uint32_t _check_interval;
74
91
 
75
 
  bool getListOfCompletedTransactions(TrxIdList &list);
 
92
  std::vector<uint32_t> _master_ids;
 
93
 
 
94
  bool _ignore_errors;
 
95
 
 
96
  /**
 
97
   * Get a list of transaction IDs from the queue that are complete.
 
98
   *
 
99
   * A "complete" transaction is one in which we have received the end
 
100
   * segment of the transaction.
 
101
   *
 
102
   * @param[in] master_id Identifier of the master we are interested in.
 
103
   * @param[out] list The list to populate with transaction IDs.
 
104
   *
 
105
   * @retval true Success
 
106
   * @retval false Error
 
107
   */
 
108
  bool getListOfCompletedTransactions(const std::string &master_id,
 
109
                                      TrxIdList &list);
76
110
 
77
111
  bool getMessage(drizzled::message::Transaction &transaction,
78
112
                  std::string &commit_id,
 
113
                  const std::string &master_id,
79
114
                  uint64_t trx_id,
80
115
                  std::string &originating_server_uuid,
81
116
                  uint64_t &originating_commit_id,
111
146
  bool executeSQLWithCommitId(std::vector<std::string> &sql,
112
147
                              const std::string &commit_id,
113
148
                              const std::string &originating_server_uuid,
114
 
                              uint64_t originating_commit_id);
 
149
                              uint64_t originating_commit_id,
 
150
                              const std::string &master_id);
115
151
  
116
152
  /**
117
153
   * Remove messages for a given transaction from the queue.
121
157
   * @retval true Success
122
158
   * @retval false Failure
123
159
   */
124
 
  bool deleteFromQueue(uint64_t trx_id);
 
160
  bool deleteFromQueue(const std::string &master_id, uint64_t trx_id);
125
161
 
126
162
  /**
127
163
   * Determine if a Statement message is an end message.