Apache-Session-Browseable
view release on metacpan or search on metacpan
lib/Apache/Session/Browseable/Store/Patroni.pm view on Meta::CPAN
},
timeout => 3,
);
my $res;
foreach my $patroniUrl ( split /[,\s]\s*/,
( $args->{PatroniUrl} || $args->{patroniUrl} ) )
{
my $resp = $ua->get($patroniUrl);
if ( $resp->is_success ) {
my $c = eval { JSON::from_json( $resp->decoded_content ) };
if ( $@ or !$c->{members} or ref( $c->{members} ) ne 'ARRAY' ) {
print STDERR "Bad response from $patroniUrl\n"
. $resp->decoded_content;
next;
}
my ($leader) = grep { $_->{role} eq 'leader' } @{ $c->{members} };
unless ($leader) {
print STDERR "No leader found from $patroniUrl\n"
. $resp->decoded_content;
next;
}
my $old = $args->{DataSource};
$args->{DataSource} =~ s/(?:port|host)=[^;]+;*//g;
$args->{DataSource} =~ s/;$//;
$args->{DataSource} .= ( $args->{DataSource} =~ /:$/ ? '' : ';' )
. "host=$leader->{host};port=$leader->{port}";
$knownMappings{$old} = $args->{DataSource};
$res = 1;
last;
( run in 1.003 second using v1.01-cache-2.11-cpan-0a987023a57 )