MariaDB-NonBlocking

 view release on metacpan or  search on metacpan

lib/MariaDB/NonBlocking/Promises/Pool.pm  view on Meta::CPAN

package MariaDB::NonBlocking::Promises::Pool;

use constant DEBUG => $ENV{MariaDB_NonBlocking_DEBUG} // $ENV{DEBUG_ALL} // 0;
sub TELL (@) {
    say STDERR __PACKAGE__, ': ', join " ", @_;
}

use v5.18.2;
use warnings;
use Sub::StrictDecl;

use constant OUR_DEFAULT_WAIT_TIMEOUT => 60;
use constant MYSQL_MAX_SLAVE_RETRIES  => 4; # magic number

use Data::Dumper;

use Carp ();
BEGIN {
    $Carp::Internal{+__PACKAGE__}     = 1;
    $Carp::CarpInternal{+__PACKAGE__} = 1;
}

use Ref::Util    qw(is_arrayref is_hashref);
use Time::HiRes  qw(time);  # for high-res time
use List::Util   qw(shuffle sum);
use Scalar::Util qw(weaken refaddr);

use MariaDB::NonBlocking::Promises qw(); # our default connector class

use if DEBUG, 'Digest::MD5' => qw(md5_hex); # dumb fingerprinting when DEBUG is true
BEGIN { *md5_hex = sub {} unless DEBUG };

use constant {
    PENDING_QUERY      => 1,            # tuple of [$query, $bind values]
    PENDING_ATTR       => 2,            # options for the query (timeout, etc)
    PENDING_DEFERRED   => 3,            # the Promises::Deferred object
    PENDING_STACKTRACE => 4,            # Stacktrace from the place the query was scheduled
    PENDING_RETRIES_REMAINING => 5,     # ...
    PENDING_SCHEDULED_TIME    => 6,      # hires unix timestamp of when the query was scheduled, for eventlog purposes
};

use constant {
    MYSQL_POOL_EXTEND_STRATEGY_MINIMUM_CONNECTIONS => 'min',
    MYSQL_POOL_EXTEND_STRATEGY_MAXIMUM_CONNECTIONS => 'max',
};

sub _format_connection_error { # Override
    my ($pool, $error, $connection_args) = @_;
    return $error;
}

sub _format_query_error { # Override
    my ($pool, $query, $error, $conn, $query_start_time, $cpu_start_time) = @_;
    return $error;
}

sub _log_time_to_connect { # Override
    my ($pool, $connection_args, $connect_start_time) = @_;
}

sub _log_time_to_be_scheduled { # Override
    my ($pool, $query_scheduled_time) = @_;
}

sub _log_query_timings { # Override
    my ($pool, $conn, $query, $query_start_time, $cpu_start_time) = @_;
}

sub _deal_with_query_warnings { # Override
    my ($pool, $query, $warnings, $raw_stacktrace) = @_;
}

sub _preprocess_query { # Override
    my ($pool, $conn, $query, $bind) = @_;
    return AnyEvent::XSPromises::resolved();
}

sub _postprocess_query { # Override
    my ($pool, $conn, $query, $query_start_time, $raw_stack) = @_;
}

sub get_raw_stacktrace { # Override
    my ($pool, $stracktrace_ignore) = @_;



( run in 1.215 second using v1.01-cache-2.11-cpan-39bf76dae61 )