Repository: microsoft/garnet
File: libs/host/Configuration/Options.cs (C#)

Code before:
                       "        Ignored unless the main store is using the free record list.")]
        public int RevivObjBinRecordCount { get; set; }

        [IntRangeValidation(0, int.MaxValue)]
        [Option("object-scan-count-limit", Required = false, HelpText = "Limit of items to return in one iteration of *SCAN command")]
        public int ObjectScanCountLimit { get; set; }

        [OptionValidation]
        [Option("enable-debug-command", Required = false, HelpText = "Enable DEBUG command for 'no', 'local' or 'all' connections")]
        public ConnectionProtectionOption EnableDebugCommand { get; set; }

        [OptionValidation]
        [Option("enable-module-command", Required = false, Hidden = true, HelpText = "Enable MODULE command for 'no', 'local' or 'all' connections")]
        public ConnectionProtectionOption EnableModuleCommand { get; set; }

        [OptionValidation]
        [Option("protected-mode", Required = false, HelpText = "Enable protected mode.")]
        public CommandLineBooleanOption ProtectedMode { get; set; }

        [DirectoryPathsValidation(true, false)]
        [Option("extension-bin-paths", Separator = ',', Required = false, HelpText = "Set directories on server from which custom command binaries can be loaded by admin users from list")]
        public IEnumerable<string> ExtensionBinPaths { get; set; }

        [ModuleFilePathValidation(true, true, false)]
        [Option("loadmodulecs", Separator = ',', Required = false, HelpText = "Load modules from list")]
        public IEnumerable<string> LoadModuleCS { get; set; }

        [Option("extension-allow-unsigned", Required = false, HelpText = "Allow loading custom commands from digitally unsigned assemblies (not recommended)")]
        public bool? ExtensionAllowUnsignedAssemblies { get; set; }

        [IntRangeValidation(1, int.MaxValue, isRequired: false)]
        [Option("index-resize-freq", Required = false, HelpText = "Index resize check frequency in seconds")]
        public int IndexResizeFrequencySecs { get; set; }

        [IntRangeValidation(1, 100, isRequired: false)]
        [Option("index-resize-threshold", Required = false, HelpText = "Overflow bucket count over total index size in percentage to trigger index resize")]
        public int IndexResizeThreshold { get; set; }

        [OptionValidation]
        [Option("fail-on-recovery-error", Required = false, HelpText = "Server bootup should fail if errors happen during bootup of AOF and checkpointing")]
        public bool? FailOnRecoveryError { get; set; }

        [OptionValidation]
        [Option("skip-rdb-restore-checksum-validation", Required = false, HelpText = "Skip RDB restore checksum validation")]
        public bool? SkipRDBRestoreChecksumValidation { get; set; }

        [OptionValidation]
        [Option("lua-memory-management-mode", Required = false, HelpText = "Memory management mode for Lua scripts, must be set to Tracked or Managed to impose script limits")]
        public LuaMemoryManagementMode LuaMemoryManagementMode { get; set; }

        [MemorySizeValidation(false)]

Review comment (suggestion):
If something is defined here and `EnableModuleCommand` is disabled, we should abort the server with an error at start up.

Code after:
                       "        Ignored unless the main store is using the free record list.")]
        public int RevivObjBinRecordCount { get; set; }

        [IntRangeValidation(0, int.MaxValue)]
        [Option("object-scan-count-limit", Required = false, HelpText = "Limit of items to return in one iteration of *SCAN command")]
        public int ObjectScanCountLimit { get; set; }

        [OptionValidation]
        [Option("enable-debug-command", Required = false, HelpText = "Enable DEBUG command for 'no', 'local' or 'all' connections")]
        public ConnectionProtectionOption EnableDebugCommand { get; set; }

        [OptionValidation]
        [Option("enable-module-command", Required = false, HelpText = "Enable MODULE command for 'no', 'local' or 'all' connections. Command can only load from paths listed in ExtensionBinPaths")]
        public ConnectionProtectionOption EnableModuleCommand { get; set; }

        [OptionValidation]
        [Option("protected-mode", Required = false, HelpText = "Enable protected mode.")]
        public CommandLineBooleanOption ProtectedMode { get; set; }

        [DirectoryPathsValidation(true, false)]
        [Option("extension-bin-paths", Separator = ',', Required = false, HelpText = "List of directories on server from which custom command binaries can be loaded by admin users. MODULE command also requires enable-module-command to be set")]
        public IEnumerable<string> ExtensionBinPaths { get; set; }

        [ModuleFilePathValidation(true, true, false)]
        [Option("loadmodulecs", Separator = ',', Required = false, HelpText = "List of modules to be loaded")]
        public IEnumerable<string> LoadModuleCS { get; set; }

        [Option("extension-allow-unsigned", Required = false, HelpText = "Allow loading custom commands from digitally unsigned assemblies (not recommended)")]
        public bool? ExtensionAllowUnsignedAssemblies { get; set; }

        [IntRangeValidation(1, int.MaxValue, isRequired: false)]
        [Option("index-resize-freq", Required = false, HelpText = "Index resize check frequency in seconds")]
        public int IndexResizeFrequencySecs { get; set; }

        [IntRangeValidation(1, 100, isRequired: false)]
        [Option("index-resize-threshold", Required = false, HelpText = "Overflow bucket count over total index size in percentage to trigger index resize")]
        public int IndexResizeThreshold { get; set; }

        [OptionValidation]
        [Option("fail-on-recovery-error", Required = false, HelpText = "Server bootup should fail if errors happen during bootup of AOF and checkpointing")]
        public bool? FailOnRecoveryError { get; set; }

        [OptionValidation]
        [Option("skip-rdb-restore-checksum-validation", Required = false, HelpText = "Skip RDB restore checksum validation")]
        public bool? SkipRDBRestoreChecksumValidation { get; set; }

        [OptionValidation]
        [Option("lua-memory-management-mode", Required = false, HelpText = "Memory management mode for Lua scripts, must be set to Tracked or Managed to impose script limits")]
        public LuaMemoryManagementMode LuaMemoryManagementMode { get; set; }

        [MemorySizeValidation(false)]