$self->{stderr_log} = $self->{stderr_log_path} . "/${service}_stderr.log"
if $self->{stderr_log_path};
- $self->{min_spare_children} ||= 0;
+ $self->load_max_min_settings;
+
+ return $self;
+}
+
+# ----------------------------------------------------------------
+# Load child process management settings directly from the
+# settings server client. If $refresh, then kill the cached
+# settings file and fetch the updated file.
+# ----------------------------------------------------------------
+sub load_max_min_settings {
+ my ($self, $refresh) = @_;
+
+ my $sclient = OpenSRF::Utils::SettingsClient->new;
+ $sclient->set_cache(0) if $refresh;
+
+ my $getval = sub {
+ $sclient->config_value(apps => $self->{service} => @_);
+ };
+
+ $self->{keepalive} = $getval->('keepalive') || 5;
+
+ # avoid re-fetching the settings file on each additional setting
+ $sclient->set_cache(1) if $refresh;
+
+ $self->{max_requests} = $getval->(unix_config => 'max_requests') || 10000;
+ $self->{max_children} = $getval->(unix_config => 'max_children') || 20;
+ $self->{min_children} = $getval->(unix_config => 'min_children') || 1;
+
+ $self->{min_spare_children} =
+ $getval->(unix_config => 'min_spare_children') || 0;
+ $self->{max_spare_children} =
+ $getval->(unix_config => 'max_spare_children');
$self->{max_spare_children} = $self->{min_spare_children} + 1 if
$self->{max_spare_children} and
$self->{max_spare_children} <= $self->{min_spare_children};
-
- return $self;
}
+
# ----------------------------------------------------------------
# Disconnects from routers and waits for child processes to exit.
# ----------------------------------------------------------------
# force-reload the logger config
OpenSRF::Utils::Logger::set_config(1);
+ # update max/min children settings
+ $self->load_max_min_settings(1);
+
# copy active list into pending list for later cleanup
$self->{sighup_pending} = [ @{$self->{active_list}} ];
my $stderr_path = ($disable_stderr =~ /true/i) ? undef : $sclient->config_value(dirs => 'log');
my $server = OpenSRF::Server->new(
- $service,
- keepalive => $getval->('keepalive') || 5,
- max_requests => $getval->(unix_config => 'max_requests') || 10000,
- max_children => $getval->(unix_config => 'max_children') || 20,
- min_children => $getval->(unix_config => 'min_children') || 1,
- min_spare_children => $getval->(unix_config => 'min_spare_children'),
- max_spare_children => $getval->(unix_config => 'max_spare_children'),
+ $service,
stderr_log_path => $stderr_path
);