You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Hudson (JIRA)" <ji...@apache.org> on 2015/07/30 15:31:04 UTC

[jira] [Commented] (THRIFT-3191) Perl compiler does not add support for unexpected exception handling

    [ https://issues.apache.org/jira/browse/THRIFT-3191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14647616#comment-14647616 ] 

Hudson commented on THRIFT-3191:
--------------------------------

SUCCESS: Integrated in Thrift #1629 (See [https://builds.apache.org/job/Thrift/1629/])
THRIFT-3053: Added perl SSL Socket support, split SSLSocket and SSLServerSocket out from their base classes, fixed THRIFT-3191 generated perl compiler exception handling code, added perl to make cross, fixed THRIFT-3189 allowing perl to listen on a specific interface through construction arguments. Did not add support in the perl client SSLSocket to verify server certificate authenticity at this time. (roger: rev f5f1b35a7d1ce819bdfdc966741399605b051c92)
* lib/perl/lib/Thrift/SSLSocket.pm
* lib/perl/lib/Thrift/Server.pm
* test/known_failures_Linux.json
* compiler/cpp/src/generate/t_perl_generator.cc
* lib/perl/lib/Thrift/Socket.pm
* test/perl/TestClient.pl
* test/perl/TestServer.pl
* lib/perl/lib/Thrift/FramedTransport.pm
* build/travis/installDependencies.sh
* lib/perl/lib/Thrift/ServerSocket.pm
* lib/perl/lib/Thrift/SSLServerSocket.pm
* test/tests.json
* lib/perl/lib/Thrift.pm
* lib/perl/README.md


> Perl compiler does not add support for unexpected exception handling
> --------------------------------------------------------------------
>
>                 Key: THRIFT-3191
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3191
>             Project: Thrift
>          Issue Type: Bug
>          Components: Perl - Compiler
>    Affects Versions: 0.9.2
>            Reporter: James E. King, III
>            Assignee: James E. King, III
>            Priority: Critical
>             Fix For: 0.9.3
>
>
> While adding "make cross" test server support for some other refactoring I found that the generated code to handle testException exception responses does not work properly.  The test says that the code can die with the specified exceptions, but it can also die with Thrift::TException.
> The generated code that fails in ThriftTest.pm:
> {noformat}
> sub process_testException {
>     my ($self, $seqid, $input, $output) = @_;
>     my $args = new ThriftTest::ThriftTest_testException_args();
>     $args->read($input);
>     $input->readMessageEnd();
>     my $result = new ThriftTest::ThriftTest_testException_result();
>     eval {
>       $self->{handler}->testException($args->arg);
>     }; if( UNIVERSAL::isa($@,'ThriftTest::Xception') ){ 
>       $result->{err1} = $@;
>     }
>     $output->writeMessageBegin('testException', TMessageType::REPLY, $seqid);
>     $result->write($output);
>     $output->writeMessageEnd();
>     $output->getTransport()->flush();
> }
> {noformat}
> If the resulting implementation dies with a {{new Thrift::TException("foo")}}, the C++ client side gets a void back.
> The result should be a TMessageType::EXCEPTION so that the client understands something went wrong at a more fundamental level than in the handler.
> There are a number of other issues with "make cross", for example TApplicationException's constructor in perl doesn't pass the arguments to the TException::SUPER::new method.  All of these things need to be fixed in order for make cross to work.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)