[cherry-pick](branch-2.1)add SessionVariable for enableCooldownReplicaAffinity (#42675)
pick from master:https://github.com/apache/doris/pull/41741
This commit is contained in:
@ -2844,9 +2844,6 @@ public class Config extends ConfigBase {
|
||||
"Stream_Load When importing, the maximum length of label is limited"})
|
||||
public static int label_regex_length = 128;
|
||||
|
||||
@ConfField(mutable = true)
|
||||
public static boolean enable_cooldown_replica_affinity = true;
|
||||
|
||||
//==========================================================================
|
||||
// end of cloud config
|
||||
//==========================================================================
|
||||
|
||||
@ -830,7 +830,7 @@ public class OlapScanNode extends ScanNode {
|
||||
}
|
||||
}
|
||||
|
||||
if (Config.enable_cooldown_replica_affinity) {
|
||||
if (isEnableCooldownReplicaAffinity()) {
|
||||
final long coolDownReplicaId = tablet.getCooldownReplicaId();
|
||||
// we prefer to query using cooldown replica to make sure the cache is fully utilized
|
||||
// for example: consider there are 3BEs(A,B,C) and each has one replica for tablet X. and X
|
||||
@ -932,6 +932,14 @@ public class OlapScanNode extends ScanNode {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isEnableCooldownReplicaAffinity() {
|
||||
ConnectContext connectContext = ConnectContext.get();
|
||||
if (connectContext != null) {
|
||||
return connectContext.getSessionVariable().isEnableCooldownReplicaAffinity();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void computePartitionInfo() throws AnalysisException {
|
||||
long start = System.currentTimeMillis();
|
||||
// Step1: compute partition ids
|
||||
|
||||
@ -644,6 +644,8 @@ public class SessionVariable implements Serializable, Writable {
|
||||
|
||||
public static final String SKIP_CHECKING_ACID_VERSION_FILE = "skip_checking_acid_version_file";
|
||||
|
||||
public static final String ENABLE_COOLDOWN_REPLICA_AFFINITY =
|
||||
"enable_cooldown_replica_affinity";
|
||||
/**
|
||||
* If set false, user couldn't submit analyze SQL and FE won't allocate any related resources.
|
||||
*/
|
||||
@ -2139,6 +2141,9 @@ public class SessionVariable implements Serializable, Writable {
|
||||
})
|
||||
public boolean skipCheckingAcidVersionFile = false;
|
||||
|
||||
@VariableMgr.VarAttr(name = ENABLE_COOLDOWN_REPLICA_AFFINITY, needForward = true)
|
||||
public boolean enableCooldownReplicaAffinity = true;
|
||||
|
||||
public void setEnableEsParallelScroll(boolean enableESParallelScroll) {
|
||||
this.enableESParallelScroll = enableESParallelScroll;
|
||||
}
|
||||
@ -4297,4 +4302,8 @@ public class SessionVariable implements Serializable, Writable {
|
||||
throw new IllegalArgumentException("Unknown serde dialect: " + serdeDialect);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isEnableCooldownReplicaAffinity() {
|
||||
return enableCooldownReplicaAffinity;
|
||||
}
|
||||
}
|
||||
|
||||
38
regression-test/suites/show_p0/test_show_variables.groovy
Normal file
38
regression-test/suites/show_p0/test_show_variables.groovy
Normal file
@ -0,0 +1,38 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF 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.apache.doris.regression.util.Http
|
||||
|
||||
suite("test_show_variables", "p0") {
|
||||
|
||||
def result = sql """show variables like "enable_cooldown_replica_affinity%";"""
|
||||
assertTrue(result[0][1]=="true")
|
||||
|
||||
result = sql """set enable_cooldown_replica_affinity=false;"""
|
||||
result = sql """show variables like "enable_cooldown_replica_affinity%";"""
|
||||
assertTrue(result[0][1]=="false")
|
||||
|
||||
result = sql """set enable_cooldown_replica_affinity=true;"""
|
||||
result = sql """show variables like "enable_cooldown_replica_affinity%";"""
|
||||
assertTrue(result[0][1]=="true")
|
||||
|
||||
result = sql """set GLOBAL enable_cooldown_replica_affinity=false;"""
|
||||
result = sql """show variables like "enable_cooldown_replica_affinity%";"""
|
||||
assertTrue(result[0][1]=="false")
|
||||
result = sql """set GLOBAL enable_cooldown_replica_affinity=true;"""
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user