thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jens Geyer (Jira)" <j...@apache.org>
Subject [jira] [Commented] (THRIFT-5085) How do I execute a call to a server that supports multiple versions?
Date Wed, 05 Feb 2020 21:00:00 GMT

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

Jens Geyer commented on THRIFT-5085:
------------------------------------

You can't do it that way, because the client is for a different service. Even if the methid
names accidentally match like with {{findPosition}}, there is no guarantee that the call succeeds.
The argument list may be differnt, there may be different return data or the throws clause
may not match. From the interface contract, these are two different services.

But in that case you still have an option left. Thrift supports inheritance at the service
level, like so:

{code}
service PositionService {
PositionDTO findPosition(1:PositionInputDTO) throws (1: PositionServiceException e);
}

service PositionServiceV2 extends PositionService {
OwnerStoresListDTO listPositions(1:ListPositionInputDTO)  throws (1:PositionServiceException
e);
}
{code}




 

 

> How do I execute a call to a server that supports multiple versions?
> --------------------------------------------------------------------
>
>                 Key: THRIFT-5085
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5085
>             Project: Thrift
>          Issue Type: Question
>          Components: Go - Compiler, Go - Library
>    Affects Versions: 0.13.0
>         Environment: OS:macOS
> On the client-side, I've got auto-generated code for go
> On the server-side, I've got auto-generated code for java 
>            Reporter: Andres Camilo Martinez Cano
>            Priority: Major
>             Fix For: 0.13.0
>
>
> Hi, my apologies beforehand If I say something strange or weird. I'm still quite new
to thrift but I love it so far.
> I have a thrift file that supports two services like so(both services use the same structs):
> {code:java}
> service PositionService {
>  PositionDTO findPosition(1:PositionInputDTO) throws (1: PositionServiceException e);
>  }
> service PositionServiceV2 {
>  PositionDTO findPosition(1:PositionInputDTO) throws (1: PositionServiceException e),
>  OwnerStoresListDTO listPositions(1:ListPositionInputDTO)  throws (1:PositionServiceException
e);
>  }
>  {code}
> What I'm currently trying to do is to call the method \{{listPositions from the {{PositionServiceV2
}}but when I execute the call I keep receiving the error message "Invalid method name: listPositions"
which makes me think that my call is being directed towards the PositionService even though
I'm using the PostionServiceV2Client to make the call for this. Please help I don't know how
to make this work. 
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message