diff options
author | Harald Musum <musum@yahooinc.com> | 2022-06-07 09:17:02 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2022-06-08 11:45:30 +0200 |
commit | f83581a8b30946e88b8c6e2c15c5c7f7d4642b1c (patch) | |
tree | c42c553f8e8ce35b4ca922f2f14b8d4301c1892b /config-model/src/main/resources/schema/version/7.x/content.rnc | |
parent | c4ee8c6f7fad73483a38692bc2411a1422f7644b (diff) |
Install xml schemas for 7.x
XML schemas for 7.x copied from master branch
Diffstat (limited to 'config-model/src/main/resources/schema/version/7.x/content.rnc')
-rw-r--r-- | config-model/src/main/resources/schema/version/7.x/content.rnc | 395 |
1 files changed, 395 insertions, 0 deletions
diff --git a/config-model/src/main/resources/schema/version/7.x/content.rnc b/config-model/src/main/resources/schema/version/7.x/content.rnc new file mode 100644 index 00000000000..8dd5f5c042f --- /dev/null +++ b/config-model/src/main/resources/schema/version/7.x/content.rnc @@ -0,0 +1,395 @@ +# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" + +include "container.rnc" +include "searchchains.rnc" + +Redundancy = element redundancy { + attribute reply-after { xsd:nonNegativeInteger }? & + xsd:nonNegativeInteger +} + +DistributionType = element distribution { + attribute type { string "strict" | string "loose" | string "legacy" } +} + +BucketSplitting = element bucket-splitting { + attribute max-documents { xsd:nonNegativeInteger }? & + attribute max-size { xsd:nonNegativeInteger }? & + attribute minimum-bits { xsd:nonNegativeInteger }? +} + +MergeTuning = element merges { + attribute max-per-node { xsd:nonNegativeInteger }? & + attribute max-queue-size { xsd:nonNegativeInteger }? & + attribute max-nodes-per-merge { xsd:nonNegativeInteger { + minInclusive = "2" maxInclusive = "16" } }? +} + +VisitorMaxConcurrent = element max-concurrent { + attribute fixed { xsd:nonNegativeInteger }? & + attribute variable { xsd:nonNegativeInteger }? +} + +VisitorTuning = element visitors { + attribute thread-count { xsd:nonNegativeInteger }? & + attribute max-queue-size { xsd:nonNegativeInteger }? & + VisitorMaxConcurrent? +} + +Maintenance = element maintenance { + attribute start { xsd:string { pattern = "[0-9]{2}:[0-9]{2}" } }, + attribute stop { xsd:string { pattern = "[0-9]{2}:[0-9]{2}" } }, + attribute high { string "monday" | string "tuesday" | string "wednesday" | + string "thursday" | string "friday" | string "saturday" | + string "sunday" } +} + +PersistenceThread = element thread { + ## The lowest priority this thread should handle. + attribute lowest-priority { string "HIGHEST" | string "VERY_HIGH" | string "HIGH_1" | + string "HIGH_2" | string "HIGH_3" | string "NORMAL_1" | string "NORMAL_2" | + string "NORMAL_3" | string "NORMAL_4" | string "NORMAL_5" | string "NORMAL_6" | + string "LOW_1" | string "LOW_2" | string "LOW_3" | string "VERY_LOW" }? & + ## The number of threads of this type to create + attribute count { xsd:integer }? +} + +## Declare which storage threads each disk should have. +PersistenceThreads = element persistence-threads { + ## The number of threads to create + attribute count { xsd:integer }? & + ## All of the below settings are deprecated. + ## Operations with priority worse than this can be blocked + attribute highest-priority-to-block { xsd:string } ? & + ## Operations with priority better than this can block others + attribute lowest-priority-to-block-others { xsd:string } ? & + Thread* +} + +MinNodeRatioPerGroup = element min-node-ratio-per-group { + xsd:double { minInclusive = "0" maxInclusive = "1" } +} + +ClusterControllerTuning = element cluster-controller { + element init-progress-time { xsd:string { pattern = "([0-9\.]+)\s*([a-z]+)?" } }? & + element transition-time { xsd:string { pattern = "([0-9\.]+)\s*([a-z]+)?" } }? & + element max-premature-crashes { xsd:nonNegativeInteger }? & + element stable-state-period { xsd:string { pattern = "([0-9\.]+)\s*([a-z]+)?" } }? & + element min-distributor-up-ratio { xsd:double }? & + element min-storage-up-ratio { xsd:double }? +} + +DispatchTuning = element dispatch { + element max-hits-per-partition { xsd:nonNegativeInteger }? & + element dispatch-policy { string "round-robin" | string "adaptive" | string "random" }? & + element min-group-coverage { xsd:double }? & # TODO: Ignored, remove on Vespa 8 + element min-active-docs-coverage { xsd:double }? & + element top-k-probability { xsd:double }? & + element use-local-node { string "true" | string "false" }? # TODO: Ignored, remove on Vespa 8 +} + +ClusterTuning = element tuning { + DispatchTuning? & + DistributionType? & + BucketSplitting? & + MergeTuning? & + VisitorTuning? & + ClusterControllerTuning? & + Maintenance? & + PersistenceThreads? & + MinNodeRatioPerGroup? & + ResourceLimits? +} + +Content = element content { + attribute version { "1.0" } & + attribute id { xsd:NCName }? & + attribute distributor-base-port { xsd:unsignedShort }? & + # Mandatory + Redundancy & + ContentSearch? & + Dispatch? & + ClusterTuning? & + # Can be used for caches and feedbatching. + GenericConfig* & + Engine? & + # Here you can add document definitions that you also want to handle. + # Search might want to know of them in advance. + Documents? & + ContentNodes? & + TopGroup? & + Controllers? + # Contains experimental feature switches + #Experimental? +} + +Controllers = + element controllers { + OptionalDedicatedNodes + } + +ContentSearch = element search { + element query-timeout { xsd:double { minInclusive = "0" } }? & + element visibility-delay { xsd:double { minInclusive = "0" } }? & + SearchCoverage? +} + +SearchCoverage = element coverage { + element minimum { xsd:double { minInclusive = "0" maxInclusive = "1" } }? & + element min-wait-after-coverage-factor { xsd:double { minInclusive = "0" maxInclusive = "1" } }? & + element max-wait-after-coverage-factor { xsd:double { minInclusive = "0" maxInclusive = "1" } }? +} + +Dispatch = element dispatch { + element num-dispatch-groups { xsd:nonNegativeInteger }? & + DispatchGroup* +} + +DispatchGroup = element group { + DispatchNode+ +} + +DispatchNode = element node { + attribute distribution-key { xsd:nonNegativeInteger } +} + +## Specification of what document processing should be done for indexing. +DocumentProcessing = element document-processing { + attribute cluster { text }? & + attribute chain { text }? +} + +## Config for the persistence providers. +Engine = element engine { + (Proton | Dummy) +} + +Proton = element proton { + element flush-on-shutdown { xsd:string }? & + element sync-transactionlog { xsd:string }? & + element visibility-delay { xsd:double { minInclusive = "0.0" } }? & + element query-timeout { xsd:double { minInclusive = "0.0" } }? & + element searchable-copies { xsd:integer { minInclusive = "0" } }? & + ResourceLimits? & + Tuning? +} + +ResourceLimits = element resource-limits { + element disk { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? & + element memory { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? +} + +Dummy = element dummy { + text +} + +Documents = element documents { + attribute selection { xsd:string }? & + attribute garbage-collection { xsd:string }? & + attribute garbage-collection-interval { xsd:nonNegativeInteger }? & + DocumentProcessing? & + + element document { + attribute type { xsd:string } & + attribute selection { xsd:string }? & + attribute mode { string "index" | string "streaming" | string "store-only" } & + attribute global { xsd:boolean }? + }+ +} + +ContentNode = element node { + GenericConfig* & + service.attlist & + attribute distribution-key { xsd:nonNegativeInteger } & + attribute capacity { xsd:double { minExclusive = "0.0" } }? & + attribute mmap-core-limit { xsd:nonNegativeInteger }? & + attribute core-on-oom { xsd:boolean }? & + attribute no-vespamalloc { xsd:string }? & + attribute vespamalloc { xsd:string }? & + attribute vespamalloc-debug { xsd:string }? & + attribute vespamalloc-debug-stacktrace { xsd:string }? & + attribute cpu-socket { xsd:nonNegativeInteger }? +} + +ContentNodes = element nodes { + Resources? & + attribute cpu-socket-affinity { xsd:string }? & + attribute mmap-core-limit { xsd:nonNegativeInteger }? & + attribute core-on-oom { xsd:boolean }? & + attribute no-vespamalloc { xsd:string }? & + attribute vespamalloc { xsd:string }? & + attribute vespamalloc-debug { xsd:string }? & + attribute vespamalloc-debug-stacktrace { xsd:string }? & + ( + ( + attribute count { xsd:positiveInteger | xsd:string } & + attribute flavor { xsd:string }? & + attribute required { xsd:boolean }? & + attribute exclusive { xsd:boolean }? & + attribute docker-image { xsd:string }? & + attribute groups { xsd:positiveInteger | xsd:string }? + ) + | + ContentNode + + ) +} + +TopGroup = element group { + # Neither name nor distribution key makes any sense for the top group. There has to be + # a top group so it never needs referring to, and it's only one group to choose from so + # it has no use of a distribution key. Leaving it allowed to set them for now to not + # break all system tests and backward compatibility. + attribute name { xsd:string }? & + attribute cpu-socket-affinity { xsd:string }? & + attribute mmap-core-limit { xsd:nonNegativeInteger }? & + attribute core-on-oom { xsd:boolean }? & + attribute no-vespamalloc { xsd:string }? & + attribute vespamalloc { xsd:string }? & + attribute vespamalloc-debug { xsd:string }? & + attribute vespamalloc-debug-stacktrace { xsd:string }? & + attribute distribution-key { xsd:nonNegativeInteger }? & + ( + ContentNode + + | + ( + element distribution { + attribute partitions { xsd:string } + } & + Group + + ) + ) +} + +Group = element group { + attribute distribution-key { xsd:nonNegativeInteger } & + attribute name { xsd:string } & + ( + ContentNode + + | + ( + element nodes { + attribute count { xsd:positiveInteger | xsd:string } & + attribute flavor { xsd:string }? & + attribute required { xsd:boolean }? & + attribute exclusive { xsd:boolean }? & + attribute docker-image { xsd:string }? & + attribute groups { xsd:positiveInteger | xsd:string }? + } + ) + | + ( + element distribution { + attribute partitions { xsd:string } + } & + Group + + ) + ) +} + +Tuning = element tuning { + element dispatch { + element max-hits-per-partition { xsd:nonNegativeInteger }? + }? & + element searchnode { + element requestthreads { + element search { xsd:nonNegativeInteger }? & + element persearch { xsd:nonNegativeInteger }? & + element summary { xsd:nonNegativeInteger }? + }? & + element flushstrategy { + element native { + element total { + element maxmemorygain { xsd:nonNegativeInteger }? & + element diskbloatfactor { xsd:double { minInclusive = "0.0" } }? + }? & + element component { + element maxmemorygain { xsd:nonNegativeInteger }? & + element diskbloatfactor { xsd:double { minInclusive = "0.0" } }? & + element maxage { xsd:nonNegativeInteger }? + }? & + element transactionlog { + element maxsize { xsd:nonNegativeInteger }? + }? & + element conservative { + element memory-limit-factor { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? & + element disk-limit-factor { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? + }? + }? + }? & + element resizing { + element initialdocumentcount { xsd:nonNegativeInteger }? & + element amortize-count { xsd:nonNegativeInteger }? + }? & + element index { + element io { + element write { TuningIoOptionsLight }? & + element read { TuningIoOptionsLight }? & + element search { TuningIoOptionsSearch }? + }? & + element warmup { + element time { xsd:double { minInclusive = "0.0" } }? & + element unpack { xsd:boolean }? + }? + }? & + element attribute { + element io { + element write { TuningIoOptionsLight }? + } + }? & + element summary { + element io { + element write { TuningIoOptionsLight }? & + element read { TuningIoOptionsFull }? + }? & + element store { + element cache { + element maxsize { xsd:nonNegativeInteger }? & + element maxsize-percent { xsd:double { minInclusive = "0.0" maxInclusive = "50.0" } }? & + element initialentries { xsd:nonNegativeInteger }? & + TuningCompression? + }? & + element logstore { + element maxfilesize { xsd:nonNegativeInteger }? & + element minfilesizefactor { xsd:double { minInclusive = "0.10" maxInclusive = "1.0" } }? & + element chunk { + element maxsize { xsd:nonNegativeInteger }? & + TuningCompression? + }? + }? + }? + }? & + element initialize { + element threads { xsd:nonNegativeInteger }? + }? & + element feeding { + element concurrency { xsd:double { minInclusive = "0.0" maxInclusive = "1.0" } }? + }? & + element removed-db { + element prune { + element age { xsd:double { minInclusive = "0.0" } }? & + element interval { xsd:double { minInclusive = "60.0" } }? + }? + }? + }? +} + +TuningIoOptionsLight = string "normal" | string "directio" +TuningIoOptionsFull = string "normal" | string "directio" | string "mmap" | string "populate" +TuningIoOptionsSearch = string "mmap" | string "populate" + +TuningCompression = element compression { + element type { string "none" | string "lz4" | string "zstd" }? & + element level { xsd:nonNegativeInteger }? +} + +#Experimental = element experimental { +# Put experimental flags here +#} + +Thread = element thread { + ## The lowest priority this thread should handle. + attribute lowest-priority { xsd:string}? & + ## The number of threads of this type to create + attribute count { xsd:integer }? +} |