[ 
https://issues.apache.org/jira/browse/THRIFT-5573?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Jiayu updated THRIFT-5573:
------------------------------
    Description: 
Currently when an exception is thrown, serialized and de-serialized into async 
client (AsyncIface which in turn uses TAsyncClient), the ___error field is set:

[onError|https://github.com/apache/thrift/blob/88a45ac77518eafb57db08938ecdf38c5fcf7a31/lib/java/src/main/java/org/apache/thrift/async/TAsyncClient.java#L99-L103]

However after that there's no way to reset that ___error field even if the 
exception is handled by callback, resulting in that the client is no longer 
usable, because in:

[onReady|https://github.com/apache/thrift/blob/88a45ac77518eafb57db08938ecdf38c5fcf7a31/lib/java/src/main/java/org/apache/thrift/async/TAsyncClient.java#L75-L85]

method the ___error field is checked and refused to continue.

We should probably either:
 * find a way to let clients or callers to reset the field, or
 * document it clearly that call site should re-create the client from async 
client factory upon encountering an exception

  was:
Currently when an exception is thrown, serialized and de-serialized into async 
client (AsyncIface which in turn uses TAsyncClient), the ___error field is set:

[onError|https://github.com/apache/thrift/blob/88a45ac77518eafb57db08938ecdf38c5fcf7a31/lib/java/src/main/java/org/apache/thrift/async/TAsyncClient.java#L99-L103]

However after that there's no way to reset that ___error field even if the 
exception is handled by callback, resulting in that the client is no longer 
usable, because in:

[onReady|https://github.com/apache/thrift/blob/88a45ac77518eafb57db08938ecdf38c5fcf7a31/lib/java/src/main/java/org/apache/thrift/async/TAsyncClient.java#L75-L85]

method the ___error field is checked and refused to continue.

We should probably find a way to let clients or callers to reset the field.


> In Java lib, TAsyncClient does not reset ___error after exception was raised
> ----------------------------------------------------------------------------
>
>                 Key: THRIFT-5573
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5573
>             Project: Thrift
>          Issue Type: Bug
>          Components: Java - Library
>            Reporter: Liu Jiayu
>            Priority: Minor
>
> Currently when an exception is thrown, serialized and de-serialized into 
> async client (AsyncIface which in turn uses TAsyncClient), the ___error field 
> is set:
> [onError|https://github.com/apache/thrift/blob/88a45ac77518eafb57db08938ecdf38c5fcf7a31/lib/java/src/main/java/org/apache/thrift/async/TAsyncClient.java#L99-L103]
> However after that there's no way to reset that ___error field even if the 
> exception is handled by callback, resulting in that the client is no longer 
> usable, because in:
> [onReady|https://github.com/apache/thrift/blob/88a45ac77518eafb57db08938ecdf38c5fcf7a31/lib/java/src/main/java/org/apache/thrift/async/TAsyncClient.java#L75-L85]
> method the ___error field is checked and refused to continue.
> We should probably either:
>  * find a way to let clients or callers to reset the field, or
>  * document it clearly that call site should re-create the client from async 
> client factory upon encountering an exception



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to