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

Christopher Tubbs commented on ACCUMULO-1703:
---------------------------------------------

This can be fixed by the mandatory use of Thrift private members, as per 
https://github.com/apache/accumulo/pull/3405

> Thrift generated code isn't properly checked for optional fields
> ----------------------------------------------------------------
>
>                 Key: ACCUMULO-1703
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-1703
>             Project: Accumulo
>          Issue Type: Bug
>            Reporter: Christopher Tubbs
>            Priority: Minor
>
> In our thrift definition files, we declare some fields as optional. However, 
> we don't actually check to see if they are sent. This may be okay for 
> Objects, which we can check for null, but it won't work for checking optional 
> primitives.
> Example:
> ProxyServer.createBatchScanner() accepts a BatchScanOptions object, which has 
> the number of threads as an optional parameter. Instead of calling 
> opts.threads, we should check if opts.isSetThreads() is true, and then 
> retrieve it with opts.getThreads().
> This is an essential check for all optional arguments (non-optional args are 
> validated by the generated validate() method).
> The importance of the optional field is high, if we want to support RPC 
> compatibility across versions. As far as I know, this is one of the goals of 
> the client proxy. So, we must use the thrift features (such as the optional 
> flag) correctly.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to