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 )