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 | search | clustering | DWS: probably doesn't deserve it's own top category |
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 | Note: subject-area could expand to beyond updates | |
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. Link to Jira issues for those props that are actually changed:
property | proposed | comment | JIRA |
---|---|---|---|
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 | Not used as system property | |
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 | solr.metrics.fieldcache.entries.disabled | ||
disableSolrFieldCacheMBeanEntryListJmx | Remove this; seems redundant | ||
doNotWeakenSecureRandom | in benchmarking and obscure; just leave it | ||
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 | ||
max.file.store.size | solr.filestore.filesize.max | DistribFileStore | |
prepRecoveryReadTimeoutExtraWait | solr.cloud.preprecoveryreadtimeoutadditional.ms | ||
runtime.lib.size | BlobRepository | ||
solr.allow.unsafe.resourceloading | solr.resourceloading.restricted | Invert meaning; default to true | |
solr.alwaysOnTraceId | solr.tracing.always.on.enabled | ||
solr.auth.jwt.allowOutboundHttp | solr.auth.jwt.outbound.http.enabled | ||
solr.authorization.superuser | solr.auth.superuser | ||
solr.circuitbreaker.errorcode | solr.circuitbreaker.errorcode | ||
solr.data.dir | |||
solr.data.home | |||
solr.default.confdir | |||
solr.deleteUnknownCores | solr.cloud.startup.delete.unknown.cores.enabled | ||
solr.disable.allowUrls | solr.requests.allow.urls | ||
solr.disable.shardsWhitelist | (deprecated; lets remove from main) | ||
solr.disableConfigSetsCreateAuthChecks | solr.configset.create.auth.checks.disabled | ||
solr.disableFingerprint | solr.index.replication.fingerprint.disabled | ||
solr.disableRequestId | solr.tracing.requestid.disabled | the feature goes away in 10? | |
solr.dns.prevent.reverse.lookup | solr.admin.handler.systeminfo.dns.prevent.reverse.lookup.enabled | ||
solr.enableRemoteStreaming | solr.requests.streaming.remote.enabled | ||
solr.enableStreamBody | solr.requests.streaming.body.enabled | ||
solr.environment | |||
solr.facet.stream.tiered | solr.streamingexpressions.facet.tiered.enabled | ||
solr.hdfs.blockcache.global | |||
solr.hdfs.confdir | |||
solr.hdfs.home | |||
solr.hdfs.sync.block | |||
solr.hiddenSysProps | solr.responses.hidden.sys.props | ||
solr.hideStackTrace | solr.responses.stacktrace.disabled | ||
solr.home | In ZkCli, should it be solr.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.jaas.debug | |||
solr.jetty.https.port | |||
solr.jetty.keystore.password | |||
solr.jetty.truststore.password | |||
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.muteconsole | |||
solr.log.requestlog.enabled | |||
solr.log.requestlog.retaindays | |||
solr.modules | |||
solr.node.roles | |||
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.solrxml.required | |||
solr.ssl.checkPeerName | |||
solr.ssl.credential.provider.chain | |||
solr.traceHostName | |||
solr.traceIdHeader | |||
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 | |||
StreamingExpressionMacros | |||
urlScheme | |||
useCachedStatsBetweenGetMBeanInfoCalls | |||
zkACLProvider | |||
zkCredentialsInjector | |||
zkCredentialsProvider | |||
zkDigestCredentialsFile | |||
zkHost | |||
zkRun | |||
zkRunOnly | |||
zkServerConfDir | |||
zkServerDataDir | |||
zookeeper.4lw.commands.whitelist | |||
Test code | |||
managed.schema.mutable | solr.schema.managed.mutable | ||
solr.directoryFactory | |||
tests.jettySsl | |||
tests.jettySsl.clientAuth | |||
tests.luceneMatchVersion | |||
tests.seed | |||
tests.shardhandler.randomSeed | |||
tests.src.home | |||
tests.verbose | |||
tests.zk.limiterAction | |||
tests.zk.violationReportAction | |||
solr.tests.cloud.cm.connloss | |||
solr.tests.cloud.cm.enabled | |||
solr.tests.cloud.cm.exp | |||
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 |