← Index
NYTProf Performance Profile   « line view »
For flows_to_es.pl
  Run on Mon May 9 23:27:59 2016
Reported on Mon May 9 23:28:08 2016

Filename/opt/flows/lib/lib/perl5/Search/Elasticsearch/Error.pm
StatementsExecuted 23 statements in 806µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11117µs47µsSearch::Elasticsearch::Error::::BEGIN@34Search::Elasticsearch::Error::BEGIN@34
1114µs4µsSearch::Elasticsearch::Error::::BEGIN@39Search::Elasticsearch::Error::BEGIN@39
0000s0sSearch::Elasticsearch::Error::::TO_JSONSearch::Elasticsearch::Error::TO_JSON
0000s0sSearch::Elasticsearch::Error::::_compareSearch::Elasticsearch::Error::_compare
0000s0sSearch::Elasticsearch::Error::::_stackSearch::Elasticsearch::Error::_stack
0000s0sSearch::Elasticsearch::Error::::_stringifySearch::Elasticsearch::Error::_stringify
0000s0sSearch::Elasticsearch::Error::::isSearch::Elasticsearch::Error::is
0000s0sSearch::Elasticsearch::Error::::newSearch::Elasticsearch::Error::new
0000s0sSearch::Elasticsearch::Error::::stacktraceSearch::Elasticsearch::Error::stacktrace
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Search::Elasticsearch::Error;
21900ns$Search::Elasticsearch::Error::VERSION = '2.02';
31200nsour $DEBUG = 0;
4
517µs@Search::Elasticsearch::Error::Internal::ISA = __PACKAGE__;
613µs@Search::Elasticsearch::Error::Param::ISA = __PACKAGE__;
712µs@Search::Elasticsearch::Error::NoNodes::ISA = __PACKAGE__;
812µs@Search::Elasticsearch::Error::Unauthorized::ISA = __PACKAGE__;
912µs@Search::Elasticsearch::Error::Forbidden::ISA = __PACKAGE__;
1012µs@Search::Elasticsearch::Error::Illegal::ISA = __PACKAGE__;
1112µs@Search::Elasticsearch::Error::Request::ISA = __PACKAGE__;
1214µs@Search::Elasticsearch::Error::Timeout::ISA = __PACKAGE__;
1312µs@Search::Elasticsearch::Error::Cxn::ISA = __PACKAGE__;
1412µs@Search::Elasticsearch::Error::Serializer::ISA = __PACKAGE__;
15
16@Search::Elasticsearch::Error::Conflict::ISA
1714µs = ( 'Search::Elasticsearch::Error::Request', __PACKAGE__ );
18
19@Search::Elasticsearch::Error::Missing::ISA
2013µs = ( 'Search::Elasticsearch::Error::Request', __PACKAGE__ );
21
22@Search::Elasticsearch::Error::RequestTimeout::ISA
2313µs = ( 'Search::Elasticsearch::Error::Request', __PACKAGE__ );
24
25@Search::Elasticsearch::Error::ContentLength::ISA
2614µs = ( __PACKAGE__, 'Search::Elasticsearch::Error::Request' );
27
28@Search::Elasticsearch::Error::SSL::ISA
2914µs = ( __PACKAGE__, 'Search::Elasticsearch::Error::Cxn' );
30
31@Search::Elasticsearch::Error::Unavailable::ISA
3214µs = ( 'Search::Elasticsearch::Error::Cxn', __PACKAGE__ );
33
34
# spent 47µs (17+30) within Search::Elasticsearch::Error::BEGIN@34 which was called: # once (17µs+30µs) by Search::Elasticsearch::Util::BEGIN@4 at line 37
use overload (
35110µs130µs '""' => '_stringify',
# spent 30µs making 1 call to overload::import
36 'cmp' => '_compare',
37128µs147µs);
# spent 47µs making 1 call to Search::Elasticsearch::Error::BEGIN@34
38
392707µs14µs
# spent 4µs within Search::Elasticsearch::Error::BEGIN@39 which was called: # once (4µs+0s) by Search::Elasticsearch::Util::BEGIN@4 at line 39
use Data::Dumper();
# spent 4µs making 1 call to Search::Elasticsearch::Error::BEGIN@39
40
41#===================================
42sub new {
43#===================================
44 my ( $class, $type, $msg, $vars, $caller ) = @_;
45 return $type if ref $type;
46 $caller ||= 0;
47
48 my $error_class = 'Search::Elasticsearch::Error::' . $type;
49 $msg = 'Unknown error' unless defined $msg;
50
51 local $DEBUG = 2 if $type eq 'Internal';
52
53 my $stack = $class->_stack;
54
55 my $self = bless {
56 type => $type,
57 text => $msg,
58 vars => $vars,
59 stack => $stack,
60 }, $error_class;
61
62 return $self;
63}
64
65#===================================
66sub is {
67#===================================
68 my $self = shift;
69 for (@_) {
70 return 1 if $self->isa("Search::Elasticsearch::Error::$_");
71 }
72 return 0;
73}
74
75#===================================
76sub _stringify {
77#===================================
78 my $self = shift;
79 local $Data::Dumper::Terse = 1;
80 local $Data::Dumper::Indent = !!$DEBUG;
81
82 unless ( $self->{msg} ) {
83 my $stack = $self->{stack};
84 my $caller = $stack->[0];
85 $self->{msg}
86 = sprintf( "[%s] ** %s, called from sub %s at %s line %d.",
87 $self->{type}, $self->{text}, @{$caller}[ 3, 1, 2 ] );
88
89 if ( $self->{vars} ) {
90 $self->{msg} .= sprintf( " With vars: %s\n",
91 Data::Dumper::Dumper $self->{vars} );
92 }
93
94 if ( @$stack > 1 ) {
95 $self->{msg}
96 .= sprintf( "Stacktrace:\n%s\n", $self->stacktrace($stack) );
97 }
98 }
99 return $self->{msg};
100
101}
102
103#===================================
104sub _compare {
105#===================================
106 my ( $self, $other, $swap ) = @_;
107 $self .= '';
108 ( $self, $other ) = ( $other, $self ) if $swap;
109 return $self cmp $other;
110}
111
112#===================================
113sub _stack {
114#===================================
115 my $self = shift;
116 my $caller = shift() || 2;
117
118 my @stack;
119 while ( my @caller = caller( ++$caller ) ) {
120 next if $caller[0] eq 'Try::Tiny';
121
122 if ( $caller[3] =~ /^(.+)::__ANON__\[(.+):(\d+)\]$/ ) {
123 @caller = ( $1, $2, $3, '(ANON)' );
124 }
125 elsif ( $caller[1] =~ /^\(eval \d+\)/ ) {
126 $caller[3] = "modified(" . $caller[3] . ")";
127 }
128
129 next
130 if $caller[0] =~ /^Search::Elasticsearch/
131 and ( $DEBUG < 2 or $caller[3] eq 'Try::Tiny::try' );
132 push @stack, [ @caller[ 0, 1, 2, 3 ] ];
133 last unless $DEBUG > 1;
134 }
135 return \@stack;
136}
137
138#===================================
139sub stacktrace {
140#===================================
141 my $self = shift;
142 my $stack = shift || $self->_stack();
143
144 my $o = sprintf "%s\n%-4s %-50s %-5s %s\n%s\n",
145 '-' x 80, '#', 'Package', 'Line', 'Sub-routine', '-' x 80;
146
147 my $i = 1;
148 for (@$stack) {
149 $o .= sprintf "%-4d %-50s %4d %s\n", $i++, @{$_}[ 0, 2, 3 ];
150 }
151
152 return $o .= ( '-' x 80 ) . "\n";
153}
154
155#===================================
156sub TO_JSON {
157#===================================
158 my $self = shift;
159 return $self->_stringify;
160}
16119µs1;
162
163# ABSTRACT: Errors thrown by Search::Elasticsearch
164
165__END__