chrish42 opened a new pull request #7025:
URL: https://github.com/apache/arrow/pull/7025


   The following patch ads Gflags support to `plasma-store-server`, leaves out 
the backtraces on invalid command-line options, and generally tries to make the 
error messages more useful in terms of nudging the user in the right direction.
   
   Now, calling `plasma-store-server` alone prints `plasma-store-server: please 
specify socket for incoming connections with -s, and the amount of memory (in 
bytes) to use with -m`. Likewise with `-h`, although that's a happy coincidence 
(`-h` was already assigned to turn on hugepage support, and the command-line 
parsing errors on the missing mandatory options before getting to that).
   
   Calling `plasma-store-server -help` produces:
   ```
   plasma-store-server: Shared-memory server for Arrow data.
   Usage: 
   
     Flags from ../src/plasma/store.cc:
       -d (directory where to create the memory-backed file) type: string
         default: "/tmp"
       -e (endpoint for external storage service, where objects evicted from
         Plasma store can be written to, optional) type: string default: ""
       -h (whether to enable hugepage support) type: bool default: false
       -m (amount of memory in bytes to use for Plasma store, required)
         type: string default: ""
       -s (socket name where the Plasma store will listen for requests, 
required)
         type: string default: ""
   
   
   
     Flags from /tmp/gflags-20190105-85639-1w01usg/gflags-2.2.2/src/gflags.cc:
       -flagfile (load flags from file) type: string default: ""
       -fromenv (set flags from the environment [use 'export 
FLAGS_flag1=value'])
         type: string default: ""
       -tryfromenv (set flags from the environment if present) type: string
         default: ""
       -undefok (comma-separated list of flag names that it is okay to specify 
on
         the command line even if the program does not define a flag with that
         name.  IMPORTANT: flags in this list that have arguments MUST use the
         flag=value format) type: string default: ""
   
     Flags from 
/tmp/gflags-20190105-85639-1w01usg/gflags-2.2.2/src/gflags_completions.cc:
       -tab_completion_columns (Number of columns to use in output for tab
         completion) type: int32 default: 80
       -tab_completion_word (If non-empty, HandleCommandLineCompletions() will
         hijack the process and attempt to do bash-style command line flag
         completion on this value.) type: string default: ""
   
     Flags from 
/tmp/gflags-20190105-85639-1w01usg/gflags-2.2.2/src/gflags_reporting.cc:
       -help (show help on all flags [tip: all flags can have two dashes])
         type: bool default: false currently: true
       -helpfull (show help on all flags -- same as -help) type: bool
         default: false
       -helpmatch (show help on modules whose name contains the specified 
substr)
         type: string default: ""
       -helpon (show help on the modules named by this flag value) type: string
         default: ""
       -helppackage (show help on all modules in the main package) type: bool
         default: false
       -helpshort (show help on only the main module for this program) type: 
bool
         default: false
       -helpxml (produce an xml version of help) type: bool default: false
       -version (show version and build info and exit) type: bool default: false
   ```
   which is rather verbose, but at least does the job.
   
   Outstanding questions:
   - Is there a way to ask Gflags to suppress all that other stuff? Or do we 
ditch Gflags and go back to `getopt()` but with a handcrafted help option and 
message? Or is this good enough?
   - I'm assuming we want to be as backward compatible as possible? Otherwise 
I'd be tempted to move the non-optional command-line options to arguments, and 
maybe leave `-h` for help.
   - In the name of being as backward-compatible as possible, I'm exiting with 
-1 if the external store directory is not empty, but with 1 for other usage 
errors? Was that worth the tiny bit of complexity to preserve that behavior?
   - Which version define do I use to report `plasma-store-server`'s version?
   - Any comments on the description of "Shared-memory server for Arrow data.", 
or is that good? 
    


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to