Filename | /opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool.pm |
Statements | Executed 55 statements in 1.34ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 1.35ms | 1.52ms | BEGIN@6 | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 46µs | 13.3ms | set_cxns | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 17µs | 342µs | BEGIN@3 | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 14µs | 26µs | __ANON__[:33] | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 13µs | 15µs | next_cxn_num | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 11µs | 37µs | BEGIN@5 | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 11µs | 120µs | BEGIN@7 | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 11µs | 23µs | request_ok | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 9µs | 146µs | BEGIN@4 | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 9µs | 263µs | BEGIN@9 | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 9µs | 145µs | BEGIN@8 | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 7µs | 8µs | reset_retries | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 7µs | 43µs | __ANON__[:3] | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 2µs | 2µs | _set_cxns (xsub) | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 2µs | 2µs | seed_nodes (xsub) | Search::Elasticsearch::Role::CxnPool::
3 | 3 | 2 | 2µs | 2µs | logger (xsub) | Search::Elasticsearch::Role::CxnPool::
3 | 3 | 3 | 2µs | 2µs | cxns (xsub) | Search::Elasticsearch::Role::CxnPool::
2 | 2 | 1 | 2µs | 2µs | _set_current_cxn_num (xsub) | Search::Elasticsearch::Role::CxnPool::
2 | 2 | 2 | 2µs | 2µs | cxn_factory (xsub) | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 1µs | 1µs | __ANON__[:17] | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 1µs | 1µs | randomize_cxns (xsub) | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 1µs | 1µs | retries (xsub) | Search::Elasticsearch::Role::CxnPool::
1 | 1 | 1 | 700ns | 700ns | current_cxn_num (xsub) | Search::Elasticsearch::Role::CxnPool::
0 | 0 | 0 | 0s | 0s | _max_retries | Search::Elasticsearch::Role::CxnPool::
0 | 0 | 0 | 0s | 0s | cxns_seeds_str | Search::Elasticsearch::Role::CxnPool::
0 | 0 | 0 | 0s | 0s | cxns_str | Search::Elasticsearch::Role::CxnPool::
0 | 0 | 0 | 0s | 0s | request_failed | Search::Elasticsearch::Role::CxnPool::
0 | 0 | 0 | 0s | 0s | should_mark_dead | Search::Elasticsearch::Role::CxnPool::
0 | 0 | 0 | 0s | 0s | should_retry | Search::Elasticsearch::Role::CxnPool::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package Search::Elasticsearch::Role::CxnPool; | ||||
2 | 1 | 500ns | $Search::Elasticsearch::Role::CxnPool::VERSION = '2.02'; | ||
3 | 4 | 52µs | 3 | 702µs | # spent 43µs (7+36) within Search::Elasticsearch::Role::CxnPool::__ANON__[/opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool.pm:3] which was called:
# once (7µs+36µs) by import::into at line 34 of Import/Into.pm
# spent 342µs (17+325) within Search::Elasticsearch::Role::CxnPool::BEGIN@3 which was called:
# once (17µs+325µs) by Module::Runtime::require_module at line 3 # spent 342µs making 1 call to Search::Elasticsearch::Role::CxnPool::BEGIN@3
# spent 325µs making 1 call to Moo::Role::import
# spent 36µs making 1 call to strictures::import |
4 | 2 | 39µs | 2 | 282µs | # spent 146µs (9+136) within Search::Elasticsearch::Role::CxnPool::BEGIN@4 which was called:
# once (9µs+136µs) by Module::Runtime::require_module at line 4 # spent 146µs making 1 call to Search::Elasticsearch::Role::CxnPool::BEGIN@4
# spent 136µs making 1 call to Sub::Exporter::__ANON__[/opt/flows/lib/lib/perl5/Sub/Exporter.pm:337] |
5 | 2 | 32µs | 2 | 64µs | # spent 37µs (11+27) within Search::Elasticsearch::Role::CxnPool::BEGIN@5 which was called:
# once (11µs+27µs) by Module::Runtime::require_module at line 5 # spent 37µs making 1 call to Search::Elasticsearch::Role::CxnPool::BEGIN@5
# spent 27µs making 1 call to Exporter::import |
6 | 2 | 140µs | 1 | 1.52ms | # spent 1.52ms (1.35+173µs) within Search::Elasticsearch::Role::CxnPool::BEGIN@6 which was called:
# once (1.35ms+173µs) by Module::Runtime::require_module at line 6 # spent 1.52ms making 1 call to Search::Elasticsearch::Role::CxnPool::BEGIN@6 |
7 | 2 | 38µs | 2 | 230µs | # spent 120µs (11+110) within Search::Elasticsearch::Role::CxnPool::BEGIN@7 which was called:
# once (11µs+110µs) by Module::Runtime::require_module at line 7 # spent 120µs making 1 call to Search::Elasticsearch::Role::CxnPool::BEGIN@7
# spent 110µs making 1 call to Time::HiRes::import |
8 | 2 | 36µs | 2 | 282µs | # spent 145µs (9+137) within Search::Elasticsearch::Role::CxnPool::BEGIN@8 which was called:
# once (9µs+137µs) by Module::Runtime::require_module at line 8 # spent 145µs making 1 call to Search::Elasticsearch::Role::CxnPool::BEGIN@8
# spent 137µs making 1 call to Sub::Exporter::__ANON__[/opt/flows/lib/lib/perl5/Sub/Exporter.pm:337] |
9 | 2 | 832µs | 2 | 518µs | # spent 263µs (9+254) within Search::Elasticsearch::Role::CxnPool::BEGIN@9 which was called:
# once (9µs+254µs) by Module::Runtime::require_module at line 9 # spent 263µs making 1 call to Search::Elasticsearch::Role::CxnPool::BEGIN@9
# spent 254µs making 1 call to namespace::clean::import |
10 | |||||
11 | 1 | 2µs | 1 | 9µs | requires qw(next_cxn schedule_check); # spent 9µs making 1 call to Moo::Role::requires |
12 | |||||
13 | 1 | 1µs | 1 | 141µs | has 'cxn_factory' => ( is => 'ro', required => 1 ); # spent 141µs making 1 call to Moo::Role::has |
14 | 1 | 2µs | 1 | 116µs | has 'logger' => ( is => 'ro', required => 1 ); # spent 116µs making 1 call to Moo::Role::has |
15 | 1 | 1µs | 1 | 110µs | has 'serializer' => ( is => 'ro', required => 1 ); # spent 110µs making 1 call to Moo::Role::has |
16 | 1 | 1µs | 1 | 221µs | has 'current_cxn_num' => ( is => 'rwp', default => 0 ); # spent 221µs making 1 call to Moo::Role::has |
17 | 2 | 7µs | 1 | 218µs | # spent 1µs within Search::Elasticsearch::Role::CxnPool::__ANON__[/opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool.pm:17] which was called:
# once (1µs+0s) by Search::Elasticsearch::CxnPool::Static::new at line 37 of (eval 86)[Sub/Quote.pm:5] # spent 218µs making 1 call to Moo::Role::has |
18 | 1 | 1µs | 1 | 110µs | has 'seed_nodes' => ( is => 'ro', required => 1 ); # spent 110µs making 1 call to Moo::Role::has |
19 | 1 | 1µs | 1 | 120µs | has 'retries' => ( is => 'rw', default => 0 ); # spent 120µs making 1 call to Moo::Role::has |
20 | 1 | 1µs | 1 | 114µs | has 'randomize_cxns' => ( is => 'ro', default => 1 ); # spent 114µs making 1 call to Moo::Role::has |
21 | |||||
22 | #=================================== | ||||
23 | # spent 26µs (14+11) within Search::Elasticsearch::Role::CxnPool::__ANON__[/opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool.pm:33] which was called:
# once (14µs+11µs) by Search::Elasticsearch::CxnPool::Static::__ANON__[(eval 82)[/usr/share/perl5/Class/Method/Modifiers.pm:93]:1] at line 1 of (eval 82)[Class/Method/Modifiers.pm:93] | ||||
24 | #=================================== | ||||
25 | 1 | 400ns | my $orig = shift; | ||
26 | 1 | 2µs | 1 | 6µs | my $params = $orig->(@_); # spent 6µs making 1 call to Moo::Object::BUILDARGS |
27 | 1 | 4µs | 1 | 5µs | my @seed = grep {$_} to_list( delete $params->{nodes} || ('') ); # spent 5µs making 1 call to Search::Elasticsearch::Util::to_list |
28 | |||||
29 | 1 | 400ns | @seed = $params->{cxn_factory}->default_host | ||
30 | unless @seed; | ||||
31 | 1 | 800ns | $params->{seed_nodes} = \@seed; | ||
32 | 1 | 4µs | return $params; | ||
33 | 1 | 4µs | 1 | 7µs | }; # spent 7µs making 1 call to Moo::Role::around |
34 | |||||
35 | #=================================== | ||||
36 | # spent 15µs (13+2) within Search::Elasticsearch::Role::CxnPool::next_cxn_num which was called:
# once (13µs+2µs) by Search::Elasticsearch::CxnPool::Static::next_cxn at line 21 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/CxnPool/Static.pm | ||||
37 | #=================================== | ||||
38 | 1 | 200ns | my $self = shift; | ||
39 | 1 | 3µs | 1 | 400ns | my $cxns = $self->cxns; # spent 400ns making 1 call to Search::Elasticsearch::Role::CxnPool::cxns |
40 | 1 | 200ns | return unless @$cxns; | ||
41 | 1 | 5µs | 1 | 700ns | my $current = $self->current_cxn_num; # spent 700ns making 1 call to Search::Elasticsearch::Role::CxnPool::current_cxn_num |
42 | 1 | 4µs | 1 | 900ns | $self->_set_current_cxn_num( ( $current + 1 ) % @$cxns ); # spent 900ns making 1 call to Search::Elasticsearch::Role::CxnPool::_set_current_cxn_num |
43 | 1 | 9µs | return $current; | ||
44 | } | ||||
45 | |||||
46 | #=================================== | ||||
47 | # spent 13.3ms (46µs+13.2) within Search::Elasticsearch::Role::CxnPool::set_cxns which was called:
# once (46µs+13.2ms) by Search::Elasticsearch::Role::CxnPool::Static::BUILD at line 13 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool/Static.pm | ||||
48 | #=================================== | ||||
49 | 1 | 300ns | my $self = shift; | ||
50 | 1 | 5µs | 1 | 600ns | my $factory = $self->cxn_factory; # spent 600ns making 1 call to Search::Elasticsearch::Role::CxnPool::cxn_factory |
51 | 2 | 4µs | 1 | 10.1ms | my @cxns = map { $factory->new_cxn($_) } @_; # spent 10.1ms making 1 call to Search::Elasticsearch::Cxn::Factory::new_cxn |
52 | 1 | 32µs | 2 | 22µs | @cxns = shuffle @cxns if $self->randomize_cxns; # spent 21µs making 1 call to List::Util::shuffle
# spent 1µs making 1 call to Search::Elasticsearch::Role::CxnPool::randomize_cxns |
53 | 1 | 7µs | 1 | 2µs | $self->_set_cxns( \@cxns ); # spent 2µs making 1 call to Search::Elasticsearch::Role::CxnPool::_set_cxns |
54 | 1 | 5µs | 1 | 900ns | $self->_set_current_cxn_num(0); # spent 900ns making 1 call to Search::Elasticsearch::Role::CxnPool::_set_current_cxn_num |
55 | |||||
56 | 1 | 2µs | 1 | 13µs | $self->logger->infof( "Current cxns: %s", # spent 13µs making 1 call to Search::Elasticsearch::Role::Cxn::HTTP::stringify |
57 | 1 | 12µs | 2 | 288µs | [ map { $_->stringify } @cxns ] ); # spent 287µs making 1 call to Search::Elasticsearch::Role::Logger::infof
# spent 600ns making 1 call to Search::Elasticsearch::Role::CxnPool::logger |
58 | |||||
59 | 1 | 4µs | return; | ||
60 | } | ||||
61 | |||||
62 | #=================================== | ||||
63 | # spent 23µs (11+13) within Search::Elasticsearch::Role::CxnPool::request_ok which was called:
# once (11µs+13µs) by Search::Elasticsearch::Transport::try {...} at line 30 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/Transport.pm | ||||
64 | #=================================== | ||||
65 | 1 | 300ns | my ( $self, $cxn ) = @_; | ||
66 | 1 | 2µs | 1 | 4µs | $cxn->mark_live; # spent 4µs making 1 call to Search::Elasticsearch::Role::Cxn::mark_live |
67 | 1 | 5µs | 1 | 8µs | $self->reset_retries; # spent 8µs making 1 call to Search::Elasticsearch::Role::CxnPool::reset_retries |
68 | } | ||||
69 | |||||
70 | #=================================== | ||||
71 | sub request_failed { | ||||
72 | #=================================== | ||||
73 | my ( $self, $cxn, $error ) = @_; | ||||
74 | |||||
75 | if ( $error->is( 'Cxn', 'Timeout' ) ) { | ||||
76 | $cxn->mark_dead if $self->should_mark_dead($error); | ||||
77 | $self->schedule_check; | ||||
78 | |||||
79 | if ( $self->should_retry($error) ) { | ||||
80 | my $retries = $self->retries( $self->retries + 1 ); | ||||
81 | return 1 if $retries < $self->_max_retries; | ||||
82 | } | ||||
83 | } | ||||
84 | else { | ||||
85 | $cxn->mark_live if $cxn; | ||||
86 | } | ||||
87 | $self->reset_retries; | ||||
88 | return 0; | ||||
89 | } | ||||
90 | |||||
91 | #=================================== | ||||
92 | sub should_retry { | ||||
93 | #=================================== | ||||
94 | my ( $self, $error ) = @_; | ||||
95 | return $error->is('Cxn'); | ||||
96 | } | ||||
97 | |||||
98 | #=================================== | ||||
99 | sub should_mark_dead { | ||||
100 | #=================================== | ||||
101 | my ( $self, $error ) = @_; | ||||
102 | return $error->is('Cxn'); | ||||
103 | } | ||||
104 | |||||
105 | #=================================== | ||||
106 | sub cxns_str { | ||||
107 | #=================================== | ||||
108 | my $self = shift; | ||||
109 | join ", ", map { $_->stringify } @{ $self->cxns }; | ||||
110 | } | ||||
111 | |||||
112 | #=================================== | ||||
113 | sub cxns_seeds_str { | ||||
114 | #=================================== | ||||
115 | my $self = shift; | ||||
116 | join ", ", ( map { $_->stringify } @{ $self->cxns } ), | ||||
117 | @{ $self->seed_nodes }; | ||||
118 | } | ||||
119 | |||||
120 | #=================================== | ||||
121 | 1 | 10µs | 1 | 1µs | # spent 8µs (7+1) within Search::Elasticsearch::Role::CxnPool::reset_retries which was called:
# once (7µs+1µs) by Search::Elasticsearch::Role::CxnPool::request_ok at line 67 # spent 1µs making 1 call to Search::Elasticsearch::Role::CxnPool::retries |
122 | sub _max_retries {2} | ||||
123 | #=================================== | ||||
124 | |||||
125 | 1 | 13µs | 1; | ||
126 | |||||
127 | =pod | ||||
128 | |||||
129 | =encoding UTF-8 | ||||
130 | |||||
131 | =head1 NAME | ||||
132 | |||||
133 | Search::Elasticsearch::Role::CxnPool - Provides common functionality to the CxnPool implementations | ||||
134 | |||||
135 | =head1 VERSION | ||||
136 | |||||
137 | version 2.02 | ||||
138 | |||||
139 | =head1 DESCRIPTION | ||||
140 | |||||
141 | See the CxnPool implementations: | ||||
142 | |||||
143 | =over | ||||
144 | |||||
145 | =item * | ||||
146 | |||||
147 | L<Search::Elasticsearch::CxnPool::Static> | ||||
148 | |||||
149 | =item * | ||||
150 | |||||
151 | L<Search::Elasticsearch::CxnPool::Sniff> | ||||
152 | |||||
153 | =item * | ||||
154 | |||||
155 | L<Search::Elasticsearch::CxnPool::Static::NoPing> | ||||
156 | |||||
157 | =back | ||||
158 | |||||
159 | =head1 CONFIGURATION | ||||
160 | |||||
161 | These configuration options should not be set by the user but are | ||||
162 | documented here for completeness. | ||||
163 | |||||
164 | =head2 C<randomize_cxns> | ||||
165 | |||||
166 | By default, the order of cxns passed to L</set_cxns()> is randomized | ||||
167 | before they are stored. Set C<randomize_cxns> to a false value to | ||||
168 | disable. | ||||
169 | |||||
170 | =head1 METHODS | ||||
171 | |||||
172 | =head2 C<cxn_factory()> | ||||
173 | |||||
174 | $factory = $cxn_pool->cxn_factory | ||||
175 | |||||
176 | Returns the L<Search::Elasticsearch::Cxn::Factory> object for creating a new | ||||
177 | C<$cxn> instance. | ||||
178 | |||||
179 | =head2 C<logger()> | ||||
180 | |||||
181 | $logger = $cxn_pool->logger | ||||
182 | |||||
183 | Returns the L<Search::Elasticsearch::Role::Logger>-based object, which | ||||
184 | defaults to L<Search::Elasticsearch::Logger::LogAny>. | ||||
185 | |||||
186 | =head2 C<serializer()> | ||||
187 | |||||
188 | $serializer = $cxn_pool->serializer | ||||
189 | |||||
190 | Returns the L<Search::Elasticsearch::Role::Serializer>-based object, | ||||
191 | which defaults to L<Search::Elasticsearch::Serializer::JSON>. | ||||
192 | |||||
193 | =head2 C<current_cxn_num()> | ||||
194 | |||||
195 | $num = $cxn_pool->current_cxn_num | ||||
196 | |||||
197 | Returns the current cxn number, which is an offset into | ||||
198 | the array of cxns set by L</set_cxns()>. | ||||
199 | |||||
200 | =head2 C<cxns()> | ||||
201 | |||||
202 | \@cxns = $cxn_pool->cxns; | ||||
203 | |||||
204 | Returns the current list of L<Search::Elasticsearch::Role::Cxn>-based | ||||
205 | cxn objects as set by L</set_cxns()>. | ||||
206 | |||||
207 | =head2 C<seed_nodes()> | ||||
208 | |||||
209 | \@seed_nodes = $cxn_pool->seed_nodes | ||||
210 | |||||
211 | Returns the list of C<nodes> originally specified when calling | ||||
212 | L<Search::Elasticsearch/new()>. | ||||
213 | |||||
214 | =head2 C<next_cxn_num()> | ||||
215 | |||||
216 | $num = $cxn_pool->next_cxn_num; | ||||
217 | |||||
218 | Returns the number of the next connection, in round-robin fashion. Updates | ||||
219 | the L</current_cxn_num()>. | ||||
220 | |||||
221 | =head2 C<set_cxns()> | ||||
222 | |||||
223 | $cxn_pool->set_cxns(@nodes); | ||||
224 | |||||
225 | Takes a list of nodes, converts them into L<Search::Elasticsearch::Role::Cxn>-based | ||||
226 | objects and makes them accessible via L</cxns()>. | ||||
227 | |||||
228 | =head2 C<request_ok()> | ||||
229 | |||||
230 | $cxn_pool->request_ok($cxn); | ||||
231 | |||||
232 | Called when a request by the specified C<$cxn> object has completed successfully. | ||||
233 | Marks the C<$cxn> as live. | ||||
234 | |||||
235 | =head2 C<request_failed()> | ||||
236 | |||||
237 | $should_retry = $cxn_pool->request_failed($cxn,$error); | ||||
238 | |||||
239 | Called when a request by the specified C<$cxn> object has failed. Returns | ||||
240 | C<1> if the request should be retried or C<0> if it shouldn't. | ||||
241 | |||||
242 | =head2 C<should_retry()> | ||||
243 | |||||
244 | $bool = $cxn_pool->should_retry($error); | ||||
245 | |||||
246 | Examines the error to decide whether the request should be retried or not. | ||||
247 | By default, only L<Search::Elasticsearch::Error/Search::Elasticsearch::Error::Cxn> errors | ||||
248 | are retried. | ||||
249 | |||||
250 | =head2 C<should_mark_dead()> | ||||
251 | |||||
252 | $bool = $cxn_pool->should_mark_dead($error); | ||||
253 | |||||
254 | Examines the error to decide whether the C<$cxn> should be marked as dead or not. | ||||
255 | By default, only L<Search::Elasticsearch::Error/Search::Elasticsearch::Error::Cxn> errors | ||||
256 | cause a C<$cxn> to be marked as dead. | ||||
257 | |||||
258 | =head2 C<cxns_str()> | ||||
259 | |||||
260 | $str = $cxn_pool->cxns_str | ||||
261 | |||||
262 | Returns all L</cxns()> as a string for logging purposes. | ||||
263 | |||||
264 | =head2 C<cxns_seeds_str()> | ||||
265 | |||||
266 | $str = $cxn_pool->cxns_seeeds_str | ||||
267 | |||||
268 | Returns all L</cxns()> and L</seed_nodes()> as a string for logging purposes. | ||||
269 | |||||
270 | =head2 C<retries()> | ||||
271 | |||||
272 | $retries = $cxn_pool->retries | ||||
273 | |||||
274 | The number of times the current request has been retried. | ||||
275 | |||||
276 | =head2 C<reset_retries()> | ||||
277 | |||||
278 | $cxn_pool->reset_retries; | ||||
279 | |||||
280 | Called at the start of a new request to reset the retries count. | ||||
281 | |||||
282 | =head1 AUTHOR | ||||
283 | |||||
284 | Clinton Gormley <drtech@cpan.org> | ||||
285 | |||||
286 | =head1 COPYRIGHT AND LICENSE | ||||
287 | |||||
288 | This software is Copyright (c) 2016 by Elasticsearch BV. | ||||
289 | |||||
290 | This is free software, licensed under: | ||||
291 | |||||
292 | The Apache License, Version 2.0, January 2004 | ||||
293 | |||||
294 | =cut | ||||
295 | |||||
296 | 1 | 19µs | 1 | 464µs | __END__ # spent 464µs making 1 call to B::Hooks::EndOfScope::XS::__ANON__[/opt/flows/lib/lib/perl5/B/Hooks/EndOfScope/XS.pm:17] |
sub Search::Elasticsearch::Role::CxnPool::_set_current_cxn_num; # xsub | |||||
# spent 2µs within Search::Elasticsearch::Role::CxnPool::_set_cxns which was called:
# once (2µs+0s) by Search::Elasticsearch::Role::CxnPool::set_cxns at line 53 | |||||
# spent 700ns within Search::Elasticsearch::Role::CxnPool::current_cxn_num which was called:
# once (700ns+0s) by Search::Elasticsearch::Role::CxnPool::next_cxn_num at line 41 | |||||
# spent 2µs within Search::Elasticsearch::Role::CxnPool::cxn_factory which was called 2 times, avg 750ns/call:
# once (900ns+0s) by Search::Elasticsearch::Role::Transport::BUILD at line 22 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/Transport.pm
# once (600ns+0s) by Search::Elasticsearch::Role::CxnPool::set_cxns at line 50 | |||||
# spent 2µs within Search::Elasticsearch::Role::CxnPool::cxns which was called 3 times, avg 733ns/call:
# once (900ns+0s) by Search::Elasticsearch::CxnPool::Static::next_cxn at line 14 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/CxnPool/Static.pm
# once (900ns+0s) by Search::Elasticsearch::Role::CxnPool::Static::schedule_check at line 22 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool/Static.pm
# once (400ns+0s) by Search::Elasticsearch::Role::CxnPool::next_cxn_num at line 39 | |||||
# spent 2µs within Search::Elasticsearch::Role::CxnPool::logger which was called 3 times, avg 767ns/call:
# once (1µs+0s) by Search::Elasticsearch::Role::CxnPool::Static::schedule_check at line 21 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool/Static.pm
# once (700ns+0s) by Search::Elasticsearch::Role::CxnPool::Static::schedule_check at line 24 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool/Static.pm
# once (600ns+0s) by Search::Elasticsearch::Role::CxnPool::set_cxns at line 57 | |||||
# spent 1µs within Search::Elasticsearch::Role::CxnPool::randomize_cxns which was called:
# once (1µs+0s) by Search::Elasticsearch::Role::CxnPool::set_cxns at line 52 | |||||
# spent 1µs within Search::Elasticsearch::Role::CxnPool::retries which was called:
# once (1µs+0s) by Search::Elasticsearch::Role::CxnPool::reset_retries at line 121 | |||||
# spent 2µs within Search::Elasticsearch::Role::CxnPool::seed_nodes which was called:
# once (2µs+0s) by Search::Elasticsearch::Role::CxnPool::Static::BUILD at line 13 of /opt/flows/lib/lib/perl5/Search/Elasticsearch/Role/CxnPool/Static.pm |