Ubic-Service-ZooKeeper
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Ubic/Service/ZooKeeper.pm~ view on Meta::CPAN
### advanced zookeeper config
dataLogDir => $opt_str,
globalOutstandingLimit => $opt_num,
preAllocSize => $opt_num,
snapCount => $opt_num,
traceFile => $opt_str,
maxClientCnxns => $opt_num,
clientPortAddress => $opt_str,
minSessionTimeout => $opt_num,
maxSessionTimeout => $opt_num,
### zookeeper cluster options
electionAlg => $opt_num,
initLimit => $opt_num,
leaderServes => $opt_str,
# num, hostname, port and weight of each server
servers => { type => HASHREF, default => {} },
groups => { type => HASHREF, default => {} },
syncLimit => $opt_num,
cnxTimeout => $opt_num,
### unsafe zookeeper options
forceSync => $opt_str,
skipACL => $opt_str,
# zookeeper myid
myid => { %$opt_num, default => 1 },
# ubic specific options
status => { type => CODEREF, optional => 1 },
user => $opt_str,
ubic_log => $opt_str,
stdout => $opt_str,
stderr => $opt_str,
pidfile => $opt_str,
port => $opt_num,
gen_cfg => $opt_str,
java => { %$opt_str, default => 'java' },
java_cp => { %$opt_str, default => '' },
jmx_enable => { type => BOOLEAN, default => 1 },
jmx_local_only => { type => BOOLEAN, default => 0 },
zoo_log_dir => { %$opt_str, default => '/var/log/zookeeper' },
zoo_log4j_prop => { %$opt_str, default => 'INFO,ROLLINGFILE' },
zoo_main_class => {
%$opt_str,
default => 'org.apache.zookeeper.server.quorum.QuorumPeerMain'
},
java_opts => { type => SCALAR, default => '' },
});
if (!$params->{pidfile}) {
$params->{pidfile} = '/tmp/zookeeper.' . $params->{clientPort} . '.pid';
}
if (!$params->{gen_cfg}) {
$params->{gen_cfg} = '/tmp/zoo.' . $params->{clientPort} . '.cfg';
}
return bless $params => $class;
}
sub bin {
my $self = shift;
my $cmd = '';
$cmd = $self->{java} . " " . $self->{java_opts} . " " .
"-cp " . $self->{java_cp} . " ";
if ($self->{jmx_enable}) {
$cmd .= "-Dcom.sun.management.jmxremote ";
unless ($self->{jmx_local_only}) {
$cmd .= "-Dcom.sun.management.jmxremote.local.only=false ";
}
}
$cmd .= "-Dzookeeper.log.dir=$self->{zoo_log_dir} ";
$cmd .= "-Dzookeeper.root.logger=$self->{zoo_log4j_prop} ";
$cmd .= $self->{zoo_main_class} . " ";
$cmd .= $self->gen_cfg;
return [ $cmd ];
}
sub _zookeeper_cfg_params_list {
return qw/clientPort dataDir tickTime dataLogDir globalOutstandingLimit
preAllocSize snapCount traceFile maxClientCnxns clientPortAddress
minSessionTimeout maxSessionTimeout electionAlg initLimit
leaderServes servers groups syncLimit cnxTimeout forceSync skipACL/;
}
=item C<create_cfg_file()>
Generates .cfg file basing on constuctor params.
=cut
sub create_cfg_file {
my $self = shift;
my $fname = $self->gen_cfg;
my $tmp_fname = $fname . ".tmp";
my %params;
foreach (_zookeeper_cfg_params_list()) {
$params{$_} = $self->{$_} if defined($self->{$_});
}
my $servers = delete $params{servers};
my $groups = delete $params{groups};
open(my $tmp_fh, '>', $tmp_fname) or die "Can't open file [$tmp_fname]: $!";
foreach my $p (sort keys %params) {
my $v = $params{$p};
print $tmp_fh "$p=$v\n";
}
print $tmp_fh "\n";
foreach my $server_num (sort {$a <=> $b} keys %$servers) {
my $s = $servers->{$server_num};
my $server = $s->{server};
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.038 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )