Subject: | Bub in SOAP Lite when using multiple services simultaneously |
Date: | Fri, 10 Aug 2018 09:25:34 +0200 |
To: | <bug-SOAP-Lite [...] rt.cpan.org> |
From: | Søren Koch <sqko [...] dtu.dk> |
Subject: | Bub in SOAP Lite when using multiple services simultaneously |
To: | bug-SOAP-Lite [...] rt.cpan.org |
From: | Søren Koch <sqko [...] dtu.dk> |
Dear maintainer of SOAP::Lite
I think we have discovered a rather severe bug in the way SOAP::Lite
operates with WSDL files.
I have 2 servers which both exposes the same service through their
respective wsdl files.
They both have the 'ping' command (which basically just returns the
hostname of the server as a string)
Individually they work as they should, but if you use them in the same
program as shown below, it appears as if the service functions of the
first SOAP instance gets overwritten with the ones of the second!
My script looks like this:
#!perl -w
use SOAP::Lite;
my $wsdl1 = 'https://celletest-15.energy.dtu.dk/wsdl/report.wsdl';
my $wsdl2 = 'https://celletest-11.energy.dtu.dk/wsdl/report.wsdl';
my $soap1 = SOAP::Lite->service($wsdl1);
print "SOAP 1 ping: ",$soap1->ping,"\n";
my $soap2 = SOAP::Lite->service($wsdl2);
print "SOAP 2 ping: ",$soap2->ping,"\n";
print "Recall ping on SOAP 1\n";
print "SOAP 1 ping: ",$soap1->ping,"\n";
And the expected output should be:
[sqko@equipment-devel-01 ~]$ perl SOAP_test.pl
SOAP 1 ping: celletest-15.energy.dtu.dk
SOAP 2 ping: celletest-11.energy.dtu.dk
Recall ping on SOAP 1
SOAP 1 ping: celletest-15.energy.dtu.dk
However instead we get:
[sqko@equipment-devel-01 ~]$ perl SOAP_test.pl
SOAP 1 ping: celletest-15.energy.dtu.dk
Subroutine _call redefined at (eval 134) line 111.
Subroutine ReportHandlerService::want_som redefined at (eval 134) line 155.
Subroutine AUTOLOAD redefined at (eval 134) line 172.
Subroutine ReportHandlerService::last_user redefined at (eval 134) line 170.
Subroutine ReportHandlerService::search redefined at (eval 134) line 170.
Subroutine ReportHandlerService::is_test redefined at (eval 134) line 170.
Subroutine ReportHandlerService::version redefined at (eval 134) line 170.
Subroutine ReportHandlerService::list_servers redefined at (eval 134)
line 170.
Subroutine ReportHandlerService::rig_auth redefined at (eval 134) line 170.
Subroutine ReportHandlerService::rig_task redefined at (eval 134) line 170.
Subroutine ReportHandlerService::is_report redefined at (eval 134) line 170.
Subroutine ReportHandlerService::rigs redefined at (eval 134) line 170.
Subroutine ReportHandlerService::ping redefined at (eval 134) line 170.
Subroutine ReportHandlerService::servers redefined at (eval 134) line 170.
Subroutine ReportHandlerService::active_rigs redefined at (eval 134)
line 170.
SOAP 2 ping: celletest-11.energy.dtu.dk
Recall ping on SOAP 1
SOAP 1 ping: celletest-11.energy.dtu.dk
As can be seen, the second call to $soap1->ping returns the result for
$soap2 (and perl warns about redefining subroutines)!
SOAP::Lite-1.27
Perl: This is perl 5, version 16, subversion 3 (v5.16.3) built for
x86_64-linux-thread-multi
OS: CentOS 7:Linux equipment-devel-01.energy.dtu.dk
3.10.0-862.6.3.el7.x86_64 #1 SMP Tue Jun 26 16:32:21 UTC 2018 x86_64
x86_64 x86_64 GNU/Linux
Yours
Søren koch
--
Søren Koch
Senior Development Engineer
DTU Energy, Risø Campus
-------------------------------------------
Technical University of Denmark
Department of Energy Conversion and Storage
Frederiksborgvej 399
Building 227, 1.sal
4000 Roskilde
Direct +45 46775816
sqko@dtu.dk
http://www.ecs.dtu.dk
Message body not shown because it is not plain text.