Commit | Line | Data |
26ab719a |
1 | package DBIx::Class::Storage::DBI::Replicated::Replicant; |
2 | |
de5dc9ef |
3 | use Moose::Role; |
edbf2778 |
4 | requires qw/_query_start/; |
26ab719a |
5 | |
6 | =head1 NAME |
7 | |
21fc4719 |
8 | DBIx::Class::Storage::DBI::Replicated::Replicant - A replicated DBI Storage Role |
26ab719a |
9 | |
10 | =head1 SYNOPSIS |
11 | |
de5dc9ef |
12 | This class is used internally by L<DBIx::Class::Storage::DBI::Replicated>. |
26ab719a |
13 | |
14 | =head1 DESCRIPTION |
15 | |
16 | Replicants are DBI Storages that follow a master DBI Storage. Typically this |
17 | is accomplished via an external replication system. Please see the documents |
18 | for L<DBIx::Class::Storage::DBI::Replicated> for more details. |
19 | |
20 | This class exists to define methods of a DBI Storage that only make sense when |
21 | it's a classic 'slave' in a pool of slave databases which replicate from a |
22 | given master database. |
23 | |
24 | =head1 ATTRIBUTES |
25 | |
26 | This class defines the following attributes. |
27 | |
50336325 |
28 | =head2 active |
29 | |
30 | This is a boolean which allows you to programmatically activate or deactivate a |
31 | replicant from the pool. This way to you do stuff like disallow a replicant |
32 | when it get's too far behind the master, if it stops replicating, etc. |
33 | |
9c748388 |
34 | This attribute DOES NOT reflect a replicant's internal status, i.e. if it is |
35 | properly replicating from a master and has not fallen too many seconds behind a |
36 | reliability threshold. For that, use L</is_replicating> and L</lag_behind_master>. |
37 | Since the implementation of those functions database specific (and not all DBIC |
38 | supported DB's support replication) you should refer your database specific |
39 | storage driver for more information. |
40 | |
50336325 |
41 | =cut |
42 | |
43 | has 'active' => ( |
64cdad22 |
44 | is=>'rw', |
45 | isa=>'Bool', |
46 | lazy=>1, |
47 | required=>1, |
48 | default=>1, |
50336325 |
49 | ); |
50 | |
26ab719a |
51 | =head1 METHODS |
52 | |
53 | This class defines the following methods. |
54 | |
f15afa13 |
55 | =head2 around: _query_start |
50336325 |
56 | |
57 | advice iof the _query_start method to add more debuggin |
58 | |
59 | =cut |
60 | |
61 | around '_query_start' => sub { |
64cdad22 |
62 | my ($method, $self, $sql, @bind) = @_; |
16df8aa9 |
63 | my $dsn = $self->_dbi_connect_info->[0]; |
64cdad22 |
64 | $self->$method("DSN: $dsn SQL: $sql", @bind); |
50336325 |
65 | }; |
66 | |
edbf2778 |
67 | =head2 debugobj |
68 | |
69 | Override the debugobj method to redirect this method call back to the master. |
70 | |
71 | =cut |
72 | |
73 | sub debugobj { |
74 | return shift->schema->storage->debugobj; |
75 | } |
76 | |
e515254d |
77 | =head1 ALSO SEE |
78 | |
79 | L<<a href="http://en.wikipedia.org/wiki/Replicant">http://en.wikipedia.org/wiki/Replicant</a>> |
80 | |
26ab719a |
81 | =head1 AUTHOR |
82 | |
83 | John Napiorkowski <john.napiorkowski@takkle.com> |
84 | |
85 | =head1 LICENSE |
86 | |
87 | You may distribute this code under the same terms as Perl itself. |
88 | |
50336325 |
89 | =cut |
90 | |
91 | 1; |