As discussed in dev-list topic "[DISCUSS] Standardizing sysprop naming".
In this document we can draft a naming structure of the form solr.<top-cat>.<sub-cat>.<prop>.<name>
Analysis of solr source code structure
Below is an analysis of the source code structure in Solr, with candidate top-cat naming.
What | Folder name | top-cat | sub-cat | Comment |
---|---|---|---|---|
Modules | clustering | clustering | ||
extraction | index | update.extraction | ||
gcs-repository | backup | gcs | ||
hadoop-auth | security | auth.hadoop | ||
hdfs | hdfs | |||
jwt-auth | security | auth.jwt | ||
langid | index | update.langid | ||
ltr | search | ltr | ||
opentelemetry | tracing | Right now it is tracing, this module may later also handle logging or metrics? | ||
s3-repository | backup | s3 | ||
scripting | index | update.scripting | ||
sql | search | sql | ||
SolrJ | solrj | solrj | ||
Core | analysis | schema | analysis | |
api | api?? | |||
cli | cli | |||
client | solrj | This is same as solrj? | ||
cloud | overseer?? | Bad name, there is "overseer" and "api" below | ||
cluster | cluster?? | These are really cluster plugins / singletons... | ||
core | core?? | Is 'core' helpful here?This hides 'backup.repository' which overlaps with modules.. | ||
filestore | filestore | |||
handler | handler??? | Inside "handler" are all kinds of features, needs to be broken down on feature level | ||
highlight | search | highlight | ||
index | index | mergepolicy | Contains mostly merge policies | |
internal | --- | Contains "csv" tools | ||
jersey | api | Jax-RS related API code | ||
legacy | --- | |||
logging | logging | |||
metrics | metrics | |||
packagemanager | packages | |||
parser | search | queryparser | Query parsing | |
pkg | --- | Related to package management | ||
query | search | query | Contains two query impls that are in Solr and not in Lucene. "query" is perhaps a nice top-level cat | |
request | search | request | Contains all kids of request related classes, faceting, DV, QueryRequest etc | |
response | search | response | Response writers, json, xml csv... and transformers | |
rest | schema | analysis | Managed resources in schema | |
schema | schema | analysis | Field types.etc | |
search | search | Lots of sub categories | ||
search | facet | |||
search | function | |||
search | grouping | |||
search | join | |||
search | mlt | |||
search | vector | |||
search | similarities | |||
search | stats | |||
security | security | auth | Security could also have sub-cat for SSL etc | |
security | audit | |||
security | authz | |||
servlet | --- | Jetty related | ||
spelling | search | spellcheck | ||
uninverting | --- | |||
update | index | update | ||
util | Various | |||
circuitbreaker | ||||
tracing | ||||
(other) | configset | |||
collection | ||||
zookeeper | ||||
adminui | ||||
ui | Admin UI |
Analysis of currently used system property names
Using a python script with regex rules, I extracted all system property names read in the codebase, either with System.getProperty(), Boolean.getBoolean() or EnvUtils.getProp*().
Below is an alphabetical list of all discovered sysprop keys, with a proposed mapping to a normalized structure:
property | proposed | comment |
---|---|---|
authenticationPlugin | solr.security.auth.plugin | |
basicauth | solr.security.auth.basicauth.credentials | |
bootstrap_conf | ??? | Is this the legacy bootstrapping based on pre-existing config on disk? |
bootstrap_confdir | ??? | |
bucketVersionLockTimeoutMs | solr.index.updatelog.bucketversionlock.timeout.ms | in <updateHandler> in solrconfig.xml |
cloudSolrClientMaxStaleRetries | solr.solrj.cloud.max.stale.retries | |
collection.configName | solr.collection.config.name | |
configset.upload.enabled | solr.configset.upload.enabled | |
createZkChroot | solr.zookeeper.chroot.create | |
disable.configEdit | solr.configset.edit.disabled | |
disable.v2.api | solr.api.v2.disabled | |
disableAdminUI | solr.ui.disabled | |
disableSolrFieldCacheMBeanEntryList | ||
disableSolrFieldCacheMBeanEntryListJmx | ||
doNotWeakenSecureRandom | ||
enable.packages | solr.packages.enabled | |
enable.update.log | solr.index.updatelog.enabled | |
gc.log.opts | ?? | |
hadoop.home.dir | ||
hadoop.security.credential.provider.path | ||
hadoopauth.tracehttp | solr.security.auth.hadoop.tracehttp | |
host | host | Jetty level |
java.security.auth.login.config | Jetty level | |
javax.net.ssl.keyStorePassword | Jetty level | |
javax.net.ssl.trustStorePassword | Jetty level | |
javax.security.auth.useSubjectCredsOnly | Jetty level | |
jetty.port | Jetty level | |
managed.schema.mutable | solr.schema.managed.mutable | |
max.file.store.size | solr.filestore.filesize.max | DistribFileStore |
prepRecoveryReadTimeoutExtraWait | ||
runtime.lib.size | BlobRepository | |
solr.allow.unsafe.resourceloading | ||
solr.alwaysOnTraceId | ||
solr.auth.jwt.allowOutboundHttp | ||
solr.authorization.superuser | ||
solr.boolean | ||
solr.boolean.nonexist | ||
solr.circuitbreaker.errorcode | ||
solr.commasep | ||
solr.data.dir | ||
solr.data.home | ||
solr.default.confdir | ||
solr.deleteUnknownCores | ||
solr.DirectoryFactory | ||
solr.directoryFactory | ||
solr.disable.allowUrls | ||
solr.disable.shardsWhitelist | ||
solr.disableConfigSetsCreateAuthChecks | ||
solr.disableFingerprint | ||
solr.disableRequestId | ||
solr.dns.prevent.reverse.lookup | ||
solr.enableRemoteStreaming | ||
solr.enableStreamBody | ||
solr.environment | ||
solr.facet.stream.tiered | ||
solr.hdfs.blockcache.global | ||
solr.hdfs.confdir | ||
solr.hdfs.home | ||
solr.hdfs.sync.block | ||
solr.hiddenSysProps | ||
solr.hideStackTrace | ||
solr.home | ||
solr.http.disableCookies | ||
solr.http1 | ||
solr.httpclient.builder.factory | ||
solr.httpclient.builder.factory | ||
solr.httpclient.config | ||
solr.httpclient.socketFactory.registry.provider | ||
solr.install.dir | ||
solr.install.dir | ||
solr.install.dir | ||
solr.jaas.debug | ||
solr.jetty.https.port | ||
solr.jetty.https.port | ||
solr.jetty.keystore.password | ||
solr.jetty.truststore.password | ||
solr.json.list | ||
solr.kerberos.cookie.domain | ||
solr.kerberos.cookie.portaware | ||
solr.kerberos.delegation.token.enabled | ||
solr.kerberos.jaas.appname | ||
solr.keyStoreReload.enabled | ||
solr.log.dir | ||
solr.log.level | ||
solr.log.level | ||
solr.log.muteconsole | ||
solr.log.requestlog.enabled | ||
solr.log.requestlog.retaindays | ||
solr.LogLevel | ||
solr.logLevel | ||
solr.long | ||
solr.long.nonexist | ||
solr.modules | ||
solr.node.roles | ||
solr.nonexist | ||
solr.overwrite | ||
solr.pki.acceptVersions | ||
solr.pki.sendVersion | ||
solr.placementplugin.default | ||
solr.redaction.system.pattern | ||
solr.security.aclautorepair.disable | ||
solr.shardSplit.checkDiskSpace.enabled | ||
solr.solr.home | ||
solr.solr.home | ||
solr.solrxml.required | ||
solr.ssl.checkPeerName | ||
solr.ssl.credential.provider.chain | ||
solr.ssl.key.store.password | ||
solr.tests.cloud.cm.connloss | ||
solr.tests.cloud.cm.enabled | ||
solr.tests.cloud.cm.runlength | ||
solr.tests.cloud.cm.shardcount | ||
solr.tests.cloud.cm.slicecount | ||
solr.tests.EnumFieldTest.indexed | ||
solr.tests.EnumFieldType | ||
solr.tests.IntegerFieldType | ||
solr.tests.numeric.dv | ||
solr.tests.ramBufferSizeMB | ||
solr.tests.ramPerThreadHardLimitMB | ||
solr.tests.use.iptables | ||
solr.traceHostName | ||
solr.traceIdHeader | ||
solr.ui.headers.csp.connect-src.urls | ||
solr.ui.headers.csp.connect-src.urls | ||
solr.use.str.intern | ||
solr.useExitableDirectoryReader | ||
solr.v2RealPath | ||
solr.zk.embedded.host | ||
solr.zookeeper.connectionStrategy | ||
solrcloud.skip.autorecovery | ||
solrConfigSetForbiddenFileTypes | ||
solrLong | ||
StreamingExpressionMacros | ||
tests.jettySsl | ||
tests.jettySsl.clientAuth | ||
tests.luceneMatchVersion | ||
tests.seed | ||
tests.shardhandler.randomSeed | ||
tests.src.home | ||
tests.verbose | ||
tests.zk.limiterAction | ||
tests.zk.violationReportAction | ||
urlScheme | ||
useCachedStatsBetweenGetMBeanInfoCalls | ||
zkACLProvider | ||
zkCredentialsInjector | ||
zkCredentialsProvider | ||
zkDigestCredentialsFile | ||
zkHost | ||
zkRun | ||
zkRunOnly | ||
zkServerConfDir | ||
zkServerDataDir | ||
zookeeper.4lw.commands.whitelist |