~raghavendra-prabhu/percona-xtradb-cluster/release-5.5.30-galera-2.x

« back to all changes in this revision

Viewing changes to galera/src/replicator_smm.cpp

  • Committer: Raghavendra D Prabhu
  • Date: 2013-04-05 13:55:24 UTC
  • mfrom: (95.2.22 2.x)
  • Revision ID: raghavendra.prabhu@percona.com-20130405135524-aa4f4y9rko7t3cvt
Merge galera/2.x branch.

We merge upto r148 of galera/2.x branch for 5.5.30-23.7.4 PXC release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
             const galera::TrxHandle& trx)
23
23
    throw (galera::ApplyException, gu::Exception)
24
24
{
25
 
    const galera::MappedBuffer& wscoll(trx.write_set_collection());
26
 
    // skip over trx header
27
 
    size_t offset(serial_size(trx));
28
 
    galera::WriteSet ws(trx.version());
29
 
 
30
 
    while (offset < wscoll.size())
 
25
    const gu::byte_t* buf(trx.write_set_buffer().first);
 
26
    const size_t buf_len(trx.write_set_buffer().second);
 
27
    size_t offset(0);
 
28
    while (offset < buf_len)
31
29
    {
32
 
        offset = unserialize(&wscoll[0], wscoll.size(), offset, ws);
33
 
 
 
30
        // Skip key segment
 
31
        std::pair<size_t, size_t> k(
 
32
            galera::WriteSet::segment(buf, buf_len, offset));
 
33
        offset = k.first + k.second;
 
34
        // Data part
 
35
        std::pair<size_t, size_t> d(
 
36
            galera::WriteSet::segment(buf, buf_len, offset));
 
37
        offset = d.first + d.second;
34
38
        wsrep_status_t err = apply_cb (recv_ctx,
35
 
                                       &ws.get_data()[0],
36
 
                                       ws.get_data().size(),
 
39
                                       buf + d.first,
 
40
                                       d.second,
37
41
                                       trx.global_seqno());
38
42
 
39
43
        if (gu_unlikely(err != WSREP_OK))
41
45
            const char* const err_str(galera::wsrep_status_str(err));
42
46
            std::ostringstream os;
43
47
 
44
 
            os << "Failed to apply app buffer: " << &ws.get_data()[0]
45
 
               << ", seqno: "<< trx.global_seqno() << ", status: " << err_str;
 
48
            os << "Failed to apply app buffer: "
 
49
               << "seqno: "<< trx.global_seqno() << ", status: " << err_str;
46
50
 
47
51
            galera::ApplyException ae(os.str(), err);
48
52
 
52
56
        }
53
57
    }
54
58
 
55
 
    assert(offset == wscoll.size());
 
59
    assert(offset == buf_len);
56
60
 
57
61
    return;
58
62
}