I looked through the RPC::XML::Client perl module code, and in certain cases 
the send_request subroutine will return a string on failure, though it appears 
that the VCL code is expecting the response to always be an object. In those 
circumstances, the $response->type call will fail. There is clearly some 
underlying error involved, but I think it is being obscured by the error you 
are seeing.

What I would recommend is that you temporarily add these lines of code just 
before line 9121:

use Data::Dumper;
notify($ERRORS{'DEBUG'}, 0, "Testing RPC::XML response: " . Dumper($response));

This will stringify the entire $response object (whatever it actually is) so 
that you can inspect it. See if that yields anything. It should, at least, give 
you some clues about what is going on.

Aaron


--
Aaron Coburn
Systems Administrator and Programmer
Academic Technology Services, Amherst College
[email protected]<mailto:[email protected]>






On Oct 11, 2012, at 12:40 PM, Michael Jinks 
<[email protected]<mailto:[email protected]>> wrote:

I finally got around to trying this; remarks in-line below.

On Tue, Oct 09, 2012 at 08:45:03AM -0400, Aaron Peeler wrote:

I'm not completely sure of the next steps, but I think this has to do
with verifying the hostname of the webserver through the
LWP::UserAgent.

We can try some different options..

One is to go ahead and upgrade to 2.3(what I recommend because of the
improved features)

Not to put too fine a point on it, but... Given the trouble we've had
with our deployment effort up to now, we're extremely reluctant to start
our implementation over again with a new version.  Once we have
something that's working in production, sure, we can start a fresh
effort on a development server with the new code, but this effort is
months behind schedule as it is and I really don't want to roll the
dice right now.

So I chose the less intrusive option:

Or another option is to update utils.pm's xmlrpc_call
1st make a copy of your untouched utils.pm file
cp /usr/local/vcl-2.2.1/lib/VCL/utils.pm
/usr/local/vcl-2.2.1/lib/VCL/utils.pm_orig

at line 9114 comment out of utils.pm

The line Should look like
my $cli = RPC::XML::Client->new($XMLRPC_URL);

and replace it with this line:

my $cli = RPC::XML::Client->new($XMLRPC_URL, useragent => ['ssl_opts'
=> {verify_hostname => 0}]);

save and restart vcld process

Hopefully this will help.

The difference in the updating utils.pm option is in the xmlrpc_call
routine is the


After applying this change, I tried again to schedule a block
allocation, and got similar results.  Longer log excerpt below, but the
line that jumps out at me is still this one:

Can't locate object method "type" via package "RPC::XML::Client::send_request:
       HTTP server error: Found" (perhaps you forgot to load 
"RPC::XML::Client::send_request: HTTP server error: Found"?) at 
/usr/local/vcl-2.2.1/bin/../lib/VCL/utils.pm line 9121 (#1)
Uncaught exception from user code:
       Can't locate object method "type" via package 
"RPC::XML::Client::send_request: HTTP server error: Found" (perhaps you forgot 
to load "RPC::XML::Client::send_request: HTTP server error: Found"?) at 
/usr/local/vcl-2.2.1/bin/../lib/VCL/utils.pm line 9121.
at /usr/local/vcl-2.2.1/bin/../lib/VCL/utils.pm line 9121


Since my line 9121 might not match up with the stock code any more,
here's the referenced block:

 if ($response->type =~ /fault/){
   notify($ERRORS{'WARNING'}, 0, "fault occured:\n" .
   " Response class = ".(ref $response)."\n".
     " Response type = ".$response->type."\n".
     " Response string = ".$response->as_string."\n".
     " Response value = ".$response->value."\n"
   );
 }


...and here's the longer chunk of vcld.log.  Any more ideas about what
might be going on?  Thanks, -m



2012-10-11 
11:34:06|15179|blockrequest|utils.pm:rename_vcld_process(7136)|renamed process 
to 'vcld 15:20 'michael test''
2012-10-11 11:34:06|15179|blockrequest|blockrequest.pm:initialize(94)|returning 
1
2012-10-11 
11:34:06|15179|blockrequest|vcld:make_new_child(565)|VCL::blockrequest object 
created and initialized
2012-10-11 
11:34:06|15179|blockrequest|blockrequest.pm:process(158)|blockrequest id: 15
2012-10-11 
11:34:06|15179|blockrequest|blockrequest.pm:process(159)|blockrequest mode: 
start
2012-10-11 
11:34:06|15179|blockrequest|blockrequest.pm:process(160)|blockrequest image id: 
114
2012-10-11 
11:34:06|15179|blockrequest|blockrequest.pm:process(161)|blockrequest number 
machines: 10
2012-10-11 
11:34:06|15179|blockrequest|blockrequest.pm:process(162)|blockrequest expire: 
2012-10-11 23:59:59
2012-10-11 11:34:06|15179|blockrequest|blockrequest.pm:process(163)|blocktime 
id: 20
2012-10-11 11:34:06|15179|blockrequest|blockrequest.pm:process(164)|blocktime 
processed: 0
2012-10-11 11:34:06|15179|blockrequest|blockrequest.pm:process(165)|blocktime 
start: 2012-10-11 13:00:00
2012-10-11 11:34:06|15179|blockrequest|blockrequest.pm:process(166)|owner 
email: [email protected]<mailto:[email protected]>
2012-10-11 11:34:06|15179|blockrequest|blockrequest.pm:process(167)|help 
address: [email protected]<mailto:[email protected]>
2012-10-11 11:34:06|15179|blockrequest|blockrequest.pm:process(172)|updated 
process flag on blocktime_id= 20
2012-10-11 11:34:06|15179|blockrequest|blockrequest.pm:process(192)|processing 
blocktime_id= 20 pass 1
2012-10-11 
11:34:06|15179|blockrequest|utils.pm:xmlrpc_call(9105)|argument_string= 
XMLRPCprocessBlockTime 20 1
Can't locate object method "type" via package "RPC::XML::Client::send_request:
       HTTP server error: Found" (perhaps you forgot to load 
"RPC::XML::Client::send_request: HTTP server error: Found"?) at 
/usr/local/vcl-2.2.1/bin/../lib/VCL/utils.pm line 9121 (#1)
Uncaught exception from user code:
       Can't locate object method "type" via package 
"RPC::XML::Client::send_request: HTTP server error: Found" (perhaps you forgot 
to load "RPC::XML::Client::send_request: HTTP server error: Found"?) at 
/usr/local/vcl-2.2.1/bin/../lib/VCL/utils.pm line 9121.
at /usr/local/vcl-2.2.1/bin/../lib/VCL/utils.pm line 9121
       VCL::utils::xmlrpc_call('XMLRPCprocessBlockTime', 20, 1) called at 
/usr/local/vcl-2.2.1/bin/../lib/VCL/blockrequest.pm line 373
       VCL::blockrequest::process_block_time(20) called at 
/usr/local/vcl-2.2.1/bin/../lib/VCL/blockrequest.pm line 193
       VCL::blockrequest::process('VCL::blockrequest=HASH(0x2754050)') called 
at /usr/local/vcl/bin/vcld line 568
       VCL::vcld::make_new_child('HASH(0x262d8d0)') called at 
/usr/local/vcl/bin/vcld line 448
       VCL::vcld::main() called at /usr/local/vcl/bin/vcld line 98
2012-10-11 11:34:06|15179|blockrequest|State.pm:DESTROY(829)|VCL::blockrequest 
destructor called, address: 2754050
2012-10-11 11:34:06|15179|blockrequest|State.pm:DESTROY(848)|number of database 
handles state process created: 1
2012-10-11 11:34:06|15050|vcld:REAPER(718)|VCL process exited for reservation 
<unknown>, PID: 15179, signal: CHLD


Reply via email to