Author: spadkins
Date: Thu Dec 13 11:56:50 2007
New Revision: 10426
Modified:
p5ee/trunk/App-Context/lib/App/Context/POE/ClusterController.pm
p5ee/trunk/App-Context/lib/App/Context/POE/ClusterNode.pm
p5ee/trunk/App-Context/lib/App/Context/POE/Server.pm
Log:
logging changes, added enter and exit statements to each poe state, and some
minor code cleaning
Modified: p5ee/trunk/App-Context/lib/App/Context/POE/ClusterController.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Context/POE/ClusterController.pm
(original)
+++ p5ee/trunk/App-Context/lib/App/Context/POE/ClusterController.pm Thu Dec
13 11:56:50 2007
@@ -209,18 +209,24 @@
sub poe_receive_node_status {
&App::sub_entry if ($App::trace);
my ($self, $kernel, $args) = @_[OBJECT, KERNEL, ARG0];
+ $self->log("POE: poe_receive_node_status enter\n") if
$self->{options}{poe_trace};
my ($node, $sys_info) = @$args;
+
$self->log("POE: poe_receive_node_status ($node) - " .
"load=$sys_info->{system_load}, " .
"memfree=$sys_info->{memfree}/$sys_info->{memtotal} " .
"swapfree=$sys_info->{swapfree}/$sys_info->{swaptotal}\n") if
$self->{options}{poe_trace};
$self->set_node_up($node, $sys_info);
+
+ $self->log("POE: poe_receive_node_status exit\n") if
$self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub poe_run_event {
- my ( $self, $kernel, $heap, $event ) = @_[ OBJECT, KERNEL, HEAP, ARG0 ];
&App::sub_entry if ($App::trace);
+ my ( $self, $kernel, $heap, $event ) = @_[ OBJECT, KERNEL, HEAP, ARG0 ];
+ $self->log("POE: poe_run_event enter\n") if $self->{options}{poe_trace};
+
my ($event_str);
my $args = $event->{args} || [];
my $args_str = join(",", @$args);
@@ -231,8 +237,9 @@
else {
$event_str = "$event->{method}($args_str)";
}
- $self->log({level=>2},"Run Event: $event_str\n") if
$self->{options}{poe_trace};
$self->send_event($event);
+
+ $self->log("POE: poe_run_event exit : event[$event_str]\n") if
$self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
Modified: p5ee/trunk/App-Context/lib/App/Context/POE/ClusterNode.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Context/POE/ClusterNode.pm (original)
+++ p5ee/trunk/App-Context/lib/App/Context/POE/ClusterNode.pm Thu Dec 13
11:56:50 2007
@@ -247,14 +247,8 @@
sub poe_cancel_async_event {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $arg0 ) = @_[ OBJECT, KERNEL, HEAP, ARG0 ];
+ $self->log("POE: poe_cancel_async_event enter\n") if
$self->{options}{poe_trace};
my ($runtime_event_token) = @$arg0;
- $self->log({level=>2},"CN : poe_cancel_async_event :
runtime_event_token=[$runtime_event_token]\n");
- #$self->log({level=>2},"CN : poe_cancel_async_event : _state_poe : \n" .
$self->_state_poe());
- my $async_event = $self->{running_async_event}{$runtime_event_token};
-
- for (my $i = 0; $i < @{$self->{pending_async_events}}; $i++) {
- my $event_token = $self->{pending_async_events}[$i][0]{event_token};
- }
### Find if running
for my $pid (keys %{$self->{running_async_event}}) {
@@ -281,7 +275,9 @@
splice(@{$self->{pending_async_events}}, $i, 1);
}
}
- &App::sub_exit() if ($App::trace);
+
+ $self->log("POE: poe_cancel_async_event exit :
runtime_event_token[$runtime_event_token]\n") if $self->{options}{poe_trace};
+ &App::sub_exit() if ($App::trace);
}
1;
Modified: p5ee/trunk/App-Context/lib/App/Context/POE/Server.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Context/POE/Server.pm (original)
+++ p5ee/trunk/App-Context/lib/App/Context/POE/Server.pm Thu Dec 13
11:56:50 2007
@@ -25,6 +25,7 @@
### This doesn't help us much, and is a pain with
### a lot of CPAN dependencies, so commenting it out
#use POE::API::Peek;
+#App->use("POE::API::Peek");
use HTTP::Status qw/RC_OK/;
use Socket qw(INADDR_ANY);
use Data::Dumper;
@@ -334,7 +335,7 @@
$state .= "\n";
### Only enable this in development, requires a library uncomment as well
- #$state .= $self->_state_poe();
+ $state .= $self->_state_poe();
### THIS DOESN'T WORK YET
#$state .= $self->_state_q();
@@ -352,19 +353,20 @@
### POE state dumping - Currently commented out because it doesn't gain us
much
### in the way of visibility, and POE::API::Peek is a CPAN pain
### UNCOMMENT THIS IF YOU NEED IT, DEPENDS ON A PAINFUL LIBRARY
- #my $api = POE::API::Peek->new();
- #my @queue = $api->event_queue_dump();
- #$state .= "POE event_queue_dump\n";
- #my $first = 1;
- #my $poe_stuff = [qw(ID index priority event type source destination)];
- #for my $item (@queue) {
- # if ($first) {
- # $state .= sprintf("%7s %6s %20s %30s %15s %30s %30s\n",
@$poe_stuff);
- # $first = 0;
- # }
- # $state .= sprintf("%7d %6d %20f %30s %15s %30s %30s\n", @[EMAIL
PROTECTED]);
- #}
- #$state .= "\n";
+ App->use("POE::API::Peek");
+ my $api = POE::API::Peek->new();
+ my @queue = $api->event_queue_dump();
+ $state .= "POE event_queue_dump\n";
+ my $first = 1;
+ my $poe_stuff = [qw(ID index priority event type source destination)];
+ for my $item (@queue) {
+ if ($first) {
+ $state .= sprintf("%7s %6s %20s %30s %15s %30s %30s\n",
@$poe_stuff);
+ $first = 0;
+ }
+ $state .= sprintf("%7d %6d %20f %30s %15s %30s %30s\n", @[EMAIL
PROTECTED]);
+ }
+ $state .= "\n";
return $state;
}
@@ -780,7 +782,7 @@
sub _start {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap ) = @_[ OBJECT, KERNEL, HEAP ];
- $self->log({level=>2},"POE: _start\n") if $self->{options}{poe_trace};
+ $self->log("POE: _start enter\n") if $self->{options}{poe_trace};
my $name = $self->{poe_session_name};
$kernel->alias_set($name);
@@ -804,21 +806,23 @@
$kernel->delay_set("poe_event_loop_extension", 5) if
(!$self->{disable_event_loop_extensions});
$kernel->delay_set("poe_alarm", 5);
+ $self->log("POE: _start exit\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub _stop {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $state, $args ) = @_[ OBJECT, KERNEL, HEAP,
ARG0, ARG1 ];
- $self->log({level=>2},"POE: _stop\n") if $self->{options}{poe_trace};
+ $self->log("POE: _stop enter\n") if $self->{options}{poe_trace};
#sleep(1); # take a second to let child processes to die (perhaps not
necessary, perhaps necessary when using POE::Wheel::Run)
+ $self->log("POE: _stop exit\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub ikc_register {
&App::sub_entry if ($App::trace);
my ($self, $kernel, $session_name) = @_[OBJECT, KERNEL, ARG1];
- $self->log({level=>2},"POE: ikc_register ($session_name)\n") if
$self->{options}{poe_ikc_debug};
+ $self->log("POE: ikc_register ($session_name)\n") if
$self->{options}{poe_ikc_debug};
my ($retval);
&App::sub_exit($retval) if ($App::trace);
return($retval);
@@ -827,14 +831,14 @@
sub ikc_unregister {
&App::sub_entry if ($App::trace);
my ($self, $kernel, $session_name) = @_[OBJECT, KERNEL, ARG1];
- $self->log({level=>2},"POE: ikc_unregister ($session_name)\n") if
$self->{options}{poe_ikc_debug};
+ $self->log("POE: ikc_unregister ($session_name)\n") if
$self->{options}{poe_ikc_debug};
&App::sub_exit() if ($App::trace);
}
sub ikc_shutdown {
&App::sub_entry if ($App::trace);
my ($self, $kernel, $arg0, $arg1, $arg2, $arg3) = @_[OBJECT, KERNEL, ARG0,
ARG1, ARG2, ARG3];
- $self->log({level=>2},"POE: ikc_shutdown args=($arg0, $arg1, $arg2,
$arg3)\n") if $self->{options}{poe_ikc_debug};
+ $self->log("POE: ikc_shutdown args=($arg0, $arg1, $arg2, $arg3)\n") if
$self->{options}{poe_ikc_debug};
&App::sub_exit() if ($App::trace);
return;
}
@@ -842,6 +846,7 @@
sub poe_yield {
&App::sub_entry if ($App::trace);
my ($self, $kernel, $state, $max_count) = @_;
+ $self->log("POE: poe_yield enter\n") if $self->{options}{poe_trace};
my $count = $self->{poe_count}{$state} || 0;
$max_count ||= 1;
@@ -851,6 +856,7 @@
$kernel->yield($state);
}
+ $self->log("POE: poe_yield exit : state[$state] poe_count[" .
$self->{poe_count}{$state} . "]\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
return;
}
@@ -858,6 +864,7 @@
sub poe_yield_acknowledged {
&App::sub_entry if ($App::trace);
my ($self, $state) = @_;
+ $self->log("POE: poe_yield_acknowledged enter\n") if
$self->{options}{poe_trace};
if ($self->{poe_count}{$state}) {
$self->{poe_count}{$state}--;
@@ -866,6 +873,7 @@
$self->{poe_count}{$state} = 0;
}
+ $self->log("POE: poe_yield_acknowledged exit : state[$state] poe_count[" .
$self->{poe_count}{$state} . "]\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
return;
}
@@ -873,7 +881,7 @@
sub poe_sigterm {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $signame ) = @_[ OBJECT, KERNEL, HEAP, ARG0 ];
- $self->log({level=>2},"POE: poe_sigterm (Caught signal $signame.
quitting.)\n") if $self->{options}{poe_trace};
+ $self->log("POE: poe_sigterm enter\n") if $self->{options}{poe_trace};
# How do I shut down the POE kernel now and exit?
# I think I need to shut down the last session and the kernel will exit.
@@ -883,41 +891,39 @@
#$kernel->yield("poe_shutdown");
# However the signals which bring me here seem to do the shutdown for me,
so it's unnecessary
+ $self->log("POE: poe_sigterm exit : signal[$signame]\n") if
$self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub poe_sigignore {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $signame ) = @_[ OBJECT, KERNEL, HEAP, ARG0 ];
- $self->log({level=>2},"POE: poe_sigignore (Caught signal $signame.
quitting.)\n") if $self->{options}{poe_trace};
+ $self->log("POE: poe_sigignore enter\n") if $self->{options}{poe_trace};
+
+ $self->log("POE: poe_sigignore exit : signal[$signame]\n") if
$self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub poe_sigchld {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $pid, $status ) = @_[ OBJECT, KERNEL, HEAP,
ARG1, ARG2 ];
+ $self->log("POE: poe_sigchld enter\n") if $self->{options}{poe_trace};
+
my $exitval = $status >> 8;
my $sig = $status & 255;
- $self->log({level=>2},"POE: poe_sigchld (Child $pid finished
[exitval=$exitval,sig=$sig])\n") if $self->{options}{poe_trace};
$self->finish_pid($pid, $exitval, $sig);
+
+ $self->log("POE: poe_sigchld exit : child[$pid] exitval[$exitval]
sig[$sig]\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub poe_alarm {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap ) = @_[ OBJECT, KERNEL, HEAP ];
+ $self->log("POE: poe_alarm enter\n") if $self->{options}{poe_trace};
+
#$self->log({level=>2},"S: poe_alarm : poe_state : \n" .
$self->_state_poe() . "\n");
- $self->log({level=>2},"POE: poe_alarm (Dispatching pending events and
queueing scheduled events)\n") if $self->{options}{poe_trace};
my $main_service = $self->{main_service};
- if ($self->{options}{poe_trace}) {
- for my $async_event (@{$self->{pending_async_events}}) {
- if ($main_service && $main_service->can("format_async_event")) {
- my ($event, $callback_event) = @$async_event;
- my $str = $main_service->format_async_event($event,
$callback_event);
- $self->log({level=>2},"POE: poe_alarm : pending_async_events :
$str\n");
- }
- }
- }
### This is mostly for the node, which needs this to spawn queued execute
subrequest events
### without it, subrequests get acquired by the node never spawns children
to shop it
@@ -932,7 +938,6 @@
$time_of_next_event = $self->get_current_events([EMAIL PROTECTED],
$time);
if ($#events > -1) {
foreach my $event (@events) {
- $self->log({level=>2},"POE: poe_alarm : yield(poe_run_event,
$event)\n") if $self->{options}{poe_trace};
$kernel->yield("poe_run_event", $event); # put on the POE run
queue
$events_occurred++;
}
@@ -942,6 +947,8 @@
# every time we process an alarm, we need to set the next one
my $sec_until_next_event = $time_of_next_event - $time;
$self->{alarm_id} = $kernel->delay_set("poe_alarm", $sec_until_next_event);
+
+ $self->log("POE: poe_alarm exit : events_occurred[$events_occurred]
sec_until_next_event[$sec_until_next_event]\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
@@ -949,7 +956,7 @@
sub poe_shutdown {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $session, $heap ) = @_[ OBJECT, KERNEL, SESSION, HEAP
];
- $self->log({level=>2},"POE: poe_shutdown\n") if
$self->{options}{poe_trace};
+ $self->log("POE: poe_shutdown enter\n") if $self->{options}{poe_trace};
### Abort all running async events
for my $event_token (keys %{$self->{running_async_event}}) {
@@ -974,6 +981,7 @@
### Shut down POE IKC
$kernel->post('IKC', 'shutdown');
+ $self->log("POE: poe_shutdown exit\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
return;
}
@@ -981,17 +989,20 @@
sub poe_dispatch_pending_async_events {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $arg ) = @_[ OBJECT, KERNEL, HEAP, ARG0 ];
- $self->log({level=>2},"POE: poe_dispatch_pending_async_events\n") if
$self->{options}{poe_trace};
+ $self->log("POE: poe_dispatch_pending_async_events enter\n") if
$self->{options}{poe_trace};
$self->poe_yield_acknowledged("poe_dispatch_pending_async_events");
my $events_occurred = $self->dispatch_pending_async_events();
+ $self->log("POE: poe_dispatch_pending_async_events exit :
events_occurred[$events_occurred]\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub poe_event_loop_extension {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap ) = @_[ OBJECT, KERNEL, HEAP ];
+ $self->log("POE: poe_event_loop_extension enter\n") if
$self->{options}{poe_trace};
+
$self->log({level=>2},"POE: poe_event_loop_extension\n") if
$self->{options}{poe_trace};
$self->poe_yield_acknowledged("poe_event_loop_extension");
my $event_loop_extensions = $self->{event_loop_extensions};
@@ -1006,36 +1017,29 @@
}
}
- ### We want to delay this if there is nothing to do (to prevent spinning
unnecessary cycles constantly)
-
- ### This was a bad first attempt, for some reason it always delayed,
- ### even when there was splitting work to be done
- #$self->log({level=>2}, "Server : poe_event_loop_extension :
async_events_added[$async_events_added] pending_async_events[" .
@{$self->{pending_async_events}} . "]\n");
- #if ($async_events_added || @{$self->{pending_async_events}} > 0) {
-
- ### This attempt keeps the splitting running, but when work finishes
- ### some capacity on a node might go underutilized until the delay passes
- ### Another downside is it tightly couples this implementation in an
abstract class
- $self->log({level=>2}, "Server : poe_event_loop_extension :
async_events_added[$async_events_added] clear_pending[" .
$self->count_in_pending_async_events("mvworkd",
"_clear_pending_hotel_shop_requests") . "]\n");
- #if ($async_events_added ||
$self->count_in_pending_async_events("mvworkd",
"_clear_pending_hotel_shop_requests") > 0) {
if ($async_events_added) {
$self->poe_yield($kernel, "poe_dispatch_pending_async_events");
$self->poe_yield($kernel, "poe_event_loop_extension");
}
+ $self->log("POE: poe_event_loop_extension exit : event_loop_extensions[" .
@$event_loop_extensions . "] async_events_added[$async_events_added]\n") if
$self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub trigger_event_loop_extension {
&App::sub_entry if ($App::trace);
my ($self) = @_;
+
$self->poe_yield($self->{poe_kernel}, "poe_event_loop_extension");
+
&App::sub_exit() if ($App::trace);
}
sub poe_run_event {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $event ) = @_[ OBJECT, KERNEL, HEAP, ARG0 ];
+ $self->log("POE: poe_run_event enter\n") if $self->{options}{poe_trace};
+
my ($event_str);
my $args = $event->{args} || [];
my $args_str = join(",", @$args);
@@ -1046,8 +1050,9 @@
else {
$event_str = "$event->{method}($args_str)";
}
- $self->log({level=>2},"POE: poe_run_event ($event_str)\n") if
$self->{options}{poe_trace};
$self->send_event($event);
+
+ $self->log("POE: poe_run_event exit : event[$event_str]\n") if
$self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
@@ -1055,12 +1060,13 @@
sub poe_enqueue_async_event {
&App::sub_entry if ($App::trace);
my ($self, $kernel, $args) = @_[OBJECT, KERNEL, ARG0];
+ $self->log("POE: poe_enqueue_async_event enter\n") if
$self->{options}{poe_trace};
my ($sender, $event, $callback_event) = @$args;
- $self->log({level=>2},"POE: poe_enqueue_async_event
($event->{name}.$event->{method} token=$event->{event_token})\n") if
$self->{options}{poe_trace};
my $runtime_event_token = $self->send_async_event($event, { method =>
"async_event_finished", args => [ $sender, $event, $callback_event ], });
$event->{event_token} = $runtime_event_token;
+ $self->log("POE: poe_enqueue_async_event exit :
event[$event->{name}.$event->{method} token=$event->{event_token}]
runtime_event_token[$runtime_event_token]\n") if $self->{options}{poe_trace};
&App::sub_exit([$runtime_event_token, [$event, $callback_event]]) if
($App::trace);
return([$runtime_event_token, [$event, $callback_event]]);
}
@@ -1069,9 +1075,12 @@
sub poe_enqueue_async_event_finished {
&App::sub_entry if ($App::trace);
my ($self, $kernel, $return_values) = @_[OBJECT, KERNEL, ARG0];
+ $self->log("POE: poe_enqueue_async_event_finished enter\n") if
$self->{options}{poe_trace};
+
my ($runtime_event_token, $async_event) = @$return_values;
- $self->log({level=>2},"POE: poe_enqueue_async_event_finished
($async_event->[0]{name}.$async_event->[0]{method} => $runtime_event_token)\n")
if $self->{options}{poe_trace};
$self->{running_async_event}{$runtime_event_token} = $async_event;
+
+ $self->log("POE: poe_enqueue_async_event_finished exit :
event[$async_event->[0]{name}.$async_event->[0]{method} =>
$runtime_event_token]\n") if $self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
@@ -1097,13 +1106,13 @@
sub poe_remote_async_event_finished {
&App::sub_entry if ($App::trace);
my ($self, $kernel, $args) = @_[OBJECT, KERNEL, ARG0];
+ $self->log("POE: poe_remote_async_event_finished enter\n") if
$self->{options}{poe_trace};
my ($runtime_event_token, $callback_args) = @$args;
my $async_event = $self->{running_async_event}{$runtime_event_token};
-
if ($async_event) {
my ($event, $callback_event) = @$async_event;
- $self->log({level=>2},"POE: poe_remote_async_event_finished
($event->{name}.$event->{method} => $runtime_event_token)\n") if
$self->{options}{poe_trace};
+ $self->log({level=>2},"POE: poe_remote_async_event_finished :
($event->{name}.$event->{method} => $runtime_event_token)\n") if
$self->{options}{poe_trace};
delete $self->{running_async_event}{$runtime_event_token};
my $destination = $event->{destination} || "local";
@@ -1118,17 +1127,19 @@
$self->log({level=>2},"Server: WARNING :
poe_remote_async_event_finished called without callback_event :
runtime_event_token[$runtime_event_token]\n");
}
}
- else {
- $self->log({level=>2},"POE: poe_remote_async_event_finished
($runtime_event_token)\n") if $self->{options}{poe_trace};
- }
+ $self->log("POE: poe_remote_async_event_finished exit\n") if
$self->{options}{poe_trace};
&App::sub_exit() if ($App::trace);
}
sub poe_server_state {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap ) = @_[ OBJECT, KERNEL, HEAP ];
+ $self->log("POE: poe_server_state enter\n") if $self->{options}{poe_trace};
+
my $server_state = $self->state();
+
+ $self->log("POE: poe_server_state exit\n") if $self->{options}{poe_trace};
&App::sub_exit($server_state) if ($App::trace);
return $server_state;
}
@@ -1136,16 +1147,17 @@
sub poe_http_server_state {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $request, $response ) = @_[ OBJECT, KERNEL,
HEAP, ARG0, ARG1 ];
- $self->log({level=>2},"POE: poe_http_server_state\n") if
$self->{options}{poe_http_debug};
- my $server_state = $kernel->call( $self->{poe_session_name},
'poe_server_state' );
+ $self->log("POE: poe_http_server_state enter\n") if
$self->{options}{poe_trace};
- # Build the response.
+ my $server_state = $kernel->call( $self->{poe_session_name},
'poe_server_state' );
+ ### Build the response.
$response->code(RC_OK);
$response->push_header( "Content-Type", "text/plain" );
$response->content($server_state);
-
- # Signal that the request was handled okay.
+ ### Signal that the request was handled okay.
$kernel->post( $self->{poe_kernel_http_name}, 'DONE', $response );
+
+ $self->log("POE: poe_http_server_state exit\n") if
$self->{options}{poe_trace};
&App::sub_exit(RC_OK) if ($App::trace);
return RC_OK;
}
@@ -1153,7 +1165,8 @@
sub poe_http_test_run {
&App::sub_entry if ($App::trace);
my ( $self, $kernel, $heap, $request, $response ) = @_[ OBJECT, KERNEL,
HEAP, ARG0, ARG1 ];
- $self->log({level=>2},"POE: poe_http_test_run\n") if
$self->{options}{poe_http_debug};
+ $self->log("POE: poe_http_test_run enter\n") if
$self->{options}{poe_trace};
+
my $event = {
service_type => "SessionObject",
name => "mvworkd",
@@ -1169,6 +1182,8 @@
# Signal that the request was handled okay.
$kernel->post( $self->{poe_kernel_http_name}, 'DONE', $response );
+
+ $self->log("POE: poe_http_test_run exit\n") if $self->{options}{poe_trace};
&App::sub_exit(RC_OK) if ($App::trace);
return RC_OK;
}