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