mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-06 21:18:31 +00:00
This commit introduces a new thread pool, `system_read`, which is intended for use by system indices for all read operations (get and search). The `system_read` pool is a fixed thread pool with a maximum number of threads equal to lesser of half of the available processors or 5. Given the combination of both get and read operations in this thread pool, the queue size has been set to 2000. The motivation for this change is to allow system read operations to be serviced in spite of the number of user searches. In order to avoid a significant performance hit due to pattern matching on all search requests, a new metadata flag is added to mark indices as system or non-system. Previously created system indices will have flag added to their metadata upon upgrade to a version with this capability. Additionally, this change also introduces a new class, `SystemIndices`, which encapsulates logic around system indices. Currently, the class provides a method to check if an index is a system index and a method to find a matching index descriptor given the name of an index. Relates #50251 Relates #37867 Backport of #57936
113 lines
4.6 KiB
Groovy
113 lines
4.6 KiB
Groovy
/*
|
|
* Licensed to Elasticsearch under one or more contributor
|
|
* license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright
|
|
* ownership. Elasticsearch licenses this file to you under
|
|
* the Apache License, Version 2.0 (the "License"); you may
|
|
* not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
* KIND, either express or implied. See the License for the
|
|
* specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
import org.elasticsearch.gradle.Version
|
|
import org.elasticsearch.gradle.info.BuildParams
|
|
import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask
|
|
|
|
apply plugin: 'elasticsearch.testclusters'
|
|
apply plugin: 'elasticsearch.standalone-test'
|
|
apply from : "$rootDir/gradle/bwc-test.gradle"
|
|
apply plugin: 'elasticsearch.rest-resources'
|
|
|
|
for (Version bwcVersion : BuildParams.bwcVersions.wireCompatible) {
|
|
/*
|
|
* The goal here is to:
|
|
* <ul>
|
|
* <li>start three nodes on the old version
|
|
* <li>run tests with systemProperty 'tests.rest.suite', 'old_cluster'
|
|
* <li>upgrade one node
|
|
* <li>run tests with systemProperty 'tests.rest.suite', 'mixed_cluster'
|
|
* <li>upgrade one more node
|
|
* <li>run tests with systemProperty 'tests.rest.suite', 'mixed_cluster' again
|
|
* <li>updgrade the last node
|
|
* <li>run tests with systemProperty 'tests.rest.suite', 'upgraded_cluster'
|
|
* </ul>
|
|
*/
|
|
String baseName = "v${bwcVersion}"
|
|
String bwcVersionStr = "${bwcVersion}"
|
|
|
|
testClusters {
|
|
"${baseName}" {
|
|
versions = [bwcVersionStr, project.version]
|
|
numberOfNodes = 3
|
|
|
|
setting 'repositories.url.allowed_urls', 'http://snapshot.test*'
|
|
setting 'path.repo', "${buildDir}/cluster/shared/repo/${baseName}"
|
|
setting 'http.content_type.required', 'true'
|
|
}
|
|
}
|
|
|
|
tasks.register("${baseName}#oldClusterTest", StandaloneRestIntegTestTask) {
|
|
dependsOn processTestResources
|
|
useCluster testClusters."${baseName}"
|
|
mustRunAfter(precommit)
|
|
doFirst {
|
|
project.delete("${buildDir}/cluster/shared/repo/${baseName}")
|
|
}
|
|
systemProperty 'tests.upgrade_from_version', bwcVersionStr
|
|
systemProperty 'tests.rest.suite', 'old_cluster'
|
|
nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}".allHttpSocketURI.join(",")}")
|
|
nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}".getName()}")
|
|
}
|
|
|
|
tasks.register("${baseName}#oneThirdUpgradedTest", StandaloneRestIntegTestTask) {
|
|
dependsOn "${baseName}#oldClusterTest"
|
|
useCluster testClusters."${baseName}"
|
|
doFirst {
|
|
testClusters."${baseName}".nextNodeToNextVersion()
|
|
}
|
|
systemProperty 'tests.rest.suite', 'mixed_cluster'
|
|
systemProperty 'tests.upgrade_from_version', bwcVersionStr
|
|
systemProperty 'tests.first_round', 'true'
|
|
nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}".allHttpSocketURI.join(",")}")
|
|
nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}".getName()}")
|
|
}
|
|
|
|
tasks.register("${baseName}#twoThirdsUpgradedTest", StandaloneRestIntegTestTask) {
|
|
dependsOn "${baseName}#oneThirdUpgradedTest"
|
|
useCluster testClusters."${baseName}"
|
|
doFirst {
|
|
testClusters."${baseName}".nextNodeToNextVersion()
|
|
}
|
|
systemProperty 'tests.rest.suite', 'mixed_cluster'
|
|
systemProperty 'tests.upgrade_from_version', bwcVersionStr
|
|
systemProperty 'tests.first_round', 'false'
|
|
nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}".allHttpSocketURI.join(",")}")
|
|
nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}".getName()}")
|
|
}
|
|
|
|
tasks.register("${baseName}#upgradedClusterTest", StandaloneRestIntegTestTask) {
|
|
dependsOn "${baseName}#twoThirdsUpgradedTest"
|
|
doFirst {
|
|
testClusters."${baseName}".nextNodeToNextVersion()
|
|
}
|
|
useCluster testClusters."${baseName}"
|
|
systemProperty 'tests.rest.suite', 'upgraded_cluster'
|
|
systemProperty 'tests.upgrade_from_version', bwcVersionStr
|
|
|
|
nonInputProperties.systemProperty('tests.rest.cluster', "${-> testClusters."${baseName}".allHttpSocketURI.join(",")}")
|
|
nonInputProperties.systemProperty('tests.clustername', "${-> testClusters."${baseName}".getName()}")
|
|
}
|
|
|
|
tasks.register(bwcTaskName(bwcVersion)) {
|
|
dependsOn tasks.named("${baseName}#upgradedClusterTest")
|
|
}
|
|
}
|