This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 8e6ee5a685e Pick "[enhance](Cooldown) Use config to control whether 
use cooldown replica for scanning first" (#38323)
8e6ee5a685e is described below

commit 8e6ee5a685e123c04c2ac0b5ea37707feba6cc71
Author: AlexYue <yj976240...@gmail.com>
AuthorDate: Wed Jul 31 11:45:02 2024 +0800

    Pick "[enhance](Cooldown) Use config to control whether use cooldown 
replica for scanning first" (#38323)
    
    ## Proposed changes
    
    <!--Describe your changes.-->
    
    same as master #37492
---
 .../main/java/org/apache/doris/common/Config.java  |  3 ++
 .../org/apache/doris/planner/OlapScanNode.java     | 42 +++++++++++-----------
 2 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java 
b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
index 57b6cf0e2eb..eef95904f6a 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
@@ -2418,4 +2418,7 @@ public class Config extends ConfigBase {
 
     @ConfField(mutable = true)
     public static boolean fix_tablet_partition_id_eq_0 = false;
+
+    @ConfField(mutable = true)
+    public static boolean enable_cooldown_replica_affinity = true;
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
index 687c27bf1dd..0509eabeb65 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java
@@ -795,27 +795,29 @@ public class OlapScanNode extends ScanNode {
                 replicas.clear();
                 replicas.add(replica);
             }
-            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
-            // is now under cooldown
-            // first time we choose BE A, and A will download data into cache 
while the other two's cache is empty
-            // second time we choose BE B, this time B will be cached, C is 
still empty
-            // third time we choose BE C, after this time all replica is cached
-            // but it means we will do 3 S3 IO to get the data which will 
bring 3 slow query
-            if (-1L != coolDownReplicaId) {
-                final Optional<Replica> replicaOptional = replicas.stream()
-                        .filter(r -> r.getId() == coolDownReplicaId).findAny();
-                replicaOptional.ifPresent(
-                        r -> {
-                            Backend backend = Env.getCurrentSystemInfo()
-                                    .getBackend(r.getBackendId());
-                            if (backend != null && backend.isAlive()) {
-                                replicas.clear();
-                                replicas.add(r);
+            if (Config.enable_cooldown_replica_affinity) {
+                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
+                // is now under cooldown
+                // first time we choose BE A, and A will download data into 
cache while the other two's cache is empty
+                // second time we choose BE B, this time B will be cached, C 
is still empty
+                // third time we choose BE C, after this time all replica is 
cached
+                // but it means we will do 3 S3 IO to get the data which will 
bring 3 slow query
+                if (-1L != coolDownReplicaId) {
+                    final Optional<Replica> replicaOptional = replicas.stream()
+                            .filter(r -> r.getId() == 
coolDownReplicaId).findAny();
+                    replicaOptional.ifPresent(
+                            r -> {
+                                Backend backend = Env.getCurrentSystemInfo()
+                                        .getBackend(r.getBackendId());
+                                if (backend != null && backend.isAlive()) {
+                                    replicas.clear();
+                                    replicas.add(r);
+                                }
                             }
-                        }
-                );
+                    );
+                }
             }
             boolean tabletIsNull = true;
             boolean collectedStat = false;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to