| Filename | /home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/Search/Elasticsearch/Error.pm |
| Statements | Executed 25 statements in 467µs |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 14µs | 39µs | Search::Elasticsearch::Error::BEGIN@40 |
| 1 | 1 | 1 | 3µs | 3µs | Search::Elasticsearch::Error::BEGIN@45 |
| 0 | 0 | 0 | 0s | 0s | Search::Elasticsearch::Error::TO_JSON |
| 0 | 0 | 0 | 0s | 0s | Search::Elasticsearch::Error::_compare |
| 0 | 0 | 0 | 0s | 0s | Search::Elasticsearch::Error::_stack |
| 0 | 0 | 0 | 0s | 0s | Search::Elasticsearch::Error::_stringify |
| 0 | 0 | 0 | 0s | 0s | Search::Elasticsearch::Error::is |
| 0 | 0 | 0 | 0s | 0s | Search::Elasticsearch::Error::new |
| 0 | 0 | 0 | 0s | 0s | Search::Elasticsearch::Error::stacktrace |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | package Search::Elasticsearch::Error; | ||||
| 2 | 1 | 200ns | $Search::Elasticsearch::Error::VERSION = '5.01'; | ||
| 3 | 1 | 200ns | our $DEBUG = 0; | ||
| 4 | |||||
| 5 | 1 | 4µs | @Search::Elasticsearch::Error::Internal::ISA = __PACKAGE__; | ||
| 6 | 1 | 1µs | @Search::Elasticsearch::Error::Param::ISA = __PACKAGE__; | ||
| 7 | 1 | 1µs | @Search::Elasticsearch::Error::NoNodes::ISA = __PACKAGE__; | ||
| 8 | 1 | 1µs | @Search::Elasticsearch::Error::Unauthorized::ISA = __PACKAGE__; | ||
| 9 | 1 | 900ns | @Search::Elasticsearch::Error::Forbidden::ISA = __PACKAGE__; | ||
| 10 | 1 | 1µs | @Search::Elasticsearch::Error::Illegal::ISA = __PACKAGE__; | ||
| 11 | 1 | 900ns | @Search::Elasticsearch::Error::Request::ISA = __PACKAGE__; | ||
| 12 | 1 | 2µs | @Search::Elasticsearch::Error::Timeout::ISA = __PACKAGE__; | ||
| 13 | 1 | 2µs | @Search::Elasticsearch::Error::Cxn::ISA = __PACKAGE__; | ||
| 14 | 1 | 1µs | @Search::Elasticsearch::Error::Serializer::ISA = __PACKAGE__; | ||
| 15 | |||||
| 16 | @Search::Elasticsearch::Error::Conflict::ISA | ||||
| 17 | 1 | 3µs | = ( 'Search::Elasticsearch::Error::Request', __PACKAGE__ ); | ||
| 18 | |||||
| 19 | @Search::Elasticsearch::Error::Missing::ISA | ||||
| 20 | 1 | 2µs | = ( 'Search::Elasticsearch::Error::Request', __PACKAGE__ ); | ||
| 21 | |||||
| 22 | @Search::Elasticsearch::Error::RequestTimeout::ISA | ||||
| 23 | 1 | 1µs | = ( 'Search::Elasticsearch::Error::Request', __PACKAGE__ ); | ||
| 24 | |||||
| 25 | @Search::Elasticsearch::Error::ContentLength::ISA | ||||
| 26 | 1 | 2µs | = ( __PACKAGE__, 'Search::Elasticsearch::Error::Request' ); | ||
| 27 | |||||
| 28 | @Search::Elasticsearch::Error::SSL::ISA | ||||
| 29 | 1 | 4µs | = ( __PACKAGE__, 'Search::Elasticsearch::Error::Cxn' ); | ||
| 30 | |||||
| 31 | @Search::Elasticsearch::Error::BadGateway::ISA | ||||
| 32 | 1 | 2µs | = ( 'Search::Elasticsearch::Error::Cxn', __PACKAGE__ ); | ||
| 33 | |||||
| 34 | @Search::Elasticsearch::Error::Unavailable::ISA | ||||
| 35 | 1 | 2µs | = ( 'Search::Elasticsearch::Error::Cxn', __PACKAGE__ ); | ||
| 36 | |||||
| 37 | @Search::Elasticsearch::Error::GatewayTimeout::ISA | ||||
| 38 | 1 | 1µs | = ( 'Search::Elasticsearch::Error::Cxn', __PACKAGE__ ); | ||
| 39 | |||||
| 40 | # spent 39µs (14+25) within Search::Elasticsearch::Error::BEGIN@40 which was called:
# once (14µs+25µs) by Search::Elasticsearch::Util::BEGIN@4 at line 43 | ||||
| 41 | 1 | 5µs | 1 | 25µs | '""' => '_stringify', # spent 25µs making 1 call to overload::import |
| 42 | 'cmp' => '_compare', | ||||
| 43 | 1 | 14µs | 1 | 39µs | ); # spent 39µs making 1 call to Search::Elasticsearch::Error::BEGIN@40 |
| 44 | |||||
| 45 | 2 | 410µs | 1 | 3µs | # spent 3µs within Search::Elasticsearch::Error::BEGIN@45 which was called:
# once (3µs+0s) by Search::Elasticsearch::Util::BEGIN@4 at line 45 # spent 3µs making 1 call to Search::Elasticsearch::Error::BEGIN@45 |
| 46 | |||||
| 47 | #=================================== | ||||
| 48 | sub new { | ||||
| 49 | #=================================== | ||||
| 50 | my ( $class, $type, $msg, $vars, $caller ) = @_; | ||||
| 51 | return $type if ref $type; | ||||
| 52 | $caller ||= 0; | ||||
| 53 | |||||
| 54 | my $error_class = 'Search::Elasticsearch::Error::' . $type; | ||||
| 55 | $msg = 'Unknown error' unless defined $msg; | ||||
| 56 | |||||
| 57 | local $DEBUG = 2 if $type eq 'Internal'; | ||||
| 58 | |||||
| 59 | my $stack = $class->_stack; | ||||
| 60 | |||||
| 61 | my $self = bless { | ||||
| 62 | type => $type, | ||||
| 63 | text => $msg, | ||||
| 64 | vars => $vars, | ||||
| 65 | stack => $stack, | ||||
| 66 | }, $error_class; | ||||
| 67 | |||||
| 68 | return $self; | ||||
| 69 | } | ||||
| 70 | |||||
| 71 | #=================================== | ||||
| 72 | sub is { | ||||
| 73 | #=================================== | ||||
| 74 | my $self = shift; | ||||
| 75 | for (@_) { | ||||
| 76 | return 1 if $self->isa("Search::Elasticsearch::Error::$_"); | ||||
| 77 | } | ||||
| 78 | return 0; | ||||
| 79 | } | ||||
| 80 | |||||
| 81 | #=================================== | ||||
| 82 | sub _stringify { | ||||
| 83 | #=================================== | ||||
| 84 | my $self = shift; | ||||
| 85 | local $Data::Dumper::Terse = 1; | ||||
| 86 | local $Data::Dumper::Indent = !!$DEBUG; | ||||
| 87 | |||||
| 88 | unless ( $self->{msg} ) { | ||||
| 89 | my $stack = $self->{stack}; | ||||
| 90 | my $caller = $stack->[0]; | ||||
| 91 | $self->{msg} = sprintf( "[%s] ** %s, called from sub %s at %s line %d.", | ||||
| 92 | $self->{type}, $self->{text}, @{$caller}[ 3, 1, 2 ] ); | ||||
| 93 | |||||
| 94 | if ( $self->{vars} ) { | ||||
| 95 | $self->{msg} .= sprintf( " With vars: %s\n", | ||||
| 96 | Data::Dumper::Dumper $self->{vars} ); | ||||
| 97 | } | ||||
| 98 | |||||
| 99 | if ( @$stack > 1 ) { | ||||
| 100 | $self->{msg} | ||||
| 101 | .= sprintf( "Stacktrace:\n%s\n", $self->stacktrace($stack) ); | ||||
| 102 | } | ||||
| 103 | } | ||||
| 104 | return $self->{msg}; | ||||
| 105 | |||||
| 106 | } | ||||
| 107 | |||||
| 108 | #=================================== | ||||
| 109 | sub _compare { | ||||
| 110 | #=================================== | ||||
| 111 | my ( $self, $other, $swap ) = @_; | ||||
| 112 | $self .= ''; | ||||
| 113 | ( $self, $other ) = ( $other, $self ) if $swap; | ||||
| 114 | return $self cmp $other; | ||||
| 115 | } | ||||
| 116 | |||||
| 117 | #=================================== | ||||
| 118 | sub _stack { | ||||
| 119 | #=================================== | ||||
| 120 | my $self = shift; | ||||
| 121 | my $caller = shift() || 2; | ||||
| 122 | |||||
| 123 | my @stack; | ||||
| 124 | while ( my @caller = caller( ++$caller ) ) { | ||||
| 125 | next if $caller[0] eq 'Try::Tiny'; | ||||
| 126 | |||||
| 127 | if ( $caller[3] =~ /^(.+)::__ANON__\[(.+):(\d+)\]$/ ) { | ||||
| 128 | @caller = ( $1, $2, $3, '(ANON)' ); | ||||
| 129 | } | ||||
| 130 | elsif ( $caller[1] =~ /^\(eval \d+\)/ ) { | ||||
| 131 | $caller[3] = "modified(" . $caller[3] . ")"; | ||||
| 132 | } | ||||
| 133 | |||||
| 134 | next | ||||
| 135 | if $caller[0] =~ /^Search::Elasticsearch/ | ||||
| 136 | and ( $DEBUG < 2 or $caller[3] eq 'Try::Tiny::try' ); | ||||
| 137 | push @stack, [ @caller[ 0, 1, 2, 3 ] ]; | ||||
| 138 | last unless $DEBUG > 1; | ||||
| 139 | } | ||||
| 140 | return \@stack; | ||||
| 141 | } | ||||
| 142 | |||||
| 143 | #=================================== | ||||
| 144 | sub stacktrace { | ||||
| 145 | #=================================== | ||||
| 146 | my $self = shift; | ||||
| 147 | my $stack = shift || $self->_stack(); | ||||
| 148 | |||||
| 149 | my $o = sprintf "%s\n%-4s %-50s %-5s %s\n%s\n", | ||||
| 150 | '-' x 80, '#', 'Package', 'Line', 'Sub-routine', '-' x 80; | ||||
| 151 | |||||
| 152 | my $i = 1; | ||||
| 153 | for (@$stack) { | ||||
| 154 | $o .= sprintf "%-4d %-50s %4d %s\n", $i++, @{$_}[ 0, 2, 3 ]; | ||||
| 155 | } | ||||
| 156 | |||||
| 157 | return $o .= ( '-' x 80 ) . "\n"; | ||||
| 158 | } | ||||
| 159 | |||||
| 160 | #=================================== | ||||
| 161 | sub TO_JSON { | ||||
| 162 | #=================================== | ||||
| 163 | my $self = shift; | ||||
| 164 | return $self->_stringify; | ||||
| 165 | } | ||||
| 166 | 1 | 5µs | 1; | ||
| 167 | |||||
| 168 | # ABSTRACT: Errors thrown by Search::Elasticsearch | ||||
| 169 | |||||
| 170 | __END__ |