[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:
kkop
2024-11-10 00:46:26 +08:00
committed by GitHub
parent 486dfe9f42
commit fba06b33b9
4 changed files with 56 additions and 4 deletions

View File

@ -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
//==========================================================================

View File

@ -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

View File

@ -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;
}
}

View 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;"""
}