Uploaded image for project: 'Accumulo'
  1. Accumulo
  2. ACCUMULO-1703

Thrift generated code isn't properly checked for optional fields

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Duplicate
    • None
    • None
    • None
    • None

    Description

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            ctubbsii Christopher Tubbs
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: