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

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new f26eace939c Mark @HighFrequencyInvocation on ShardingSphereAlgorithms 
(#36299)
f26eace939c is described below

commit f26eace939c0f5f30c68f1ddc151d309f0652379
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Aug 14 12:18:25 2025 +0800

    Mark @HighFrequencyInvocation on ShardingSphereAlgorithms (#36299)
---
 .../algorithm/cryptographic/aes/AESCryptographicAlgorithm.java     | 6 ++++++
 .../algorithm/keygen/snowflake/SnowflakeKeyGenerateAlgorithm.java  | 5 +++++
 .../algorithm/loadbalancer/random/RandomLoadBalanceAlgorithm.java  | 2 ++
 .../loadbalancer/round/robin/RoundRobinLoadBalanceAlgorithm.java   | 2 ++
 .../algorithm/loadbalancer/weight/WeightLoadBalanceAlgorithm.java  | 7 +++++++
 .../algorithm/messagedigest/md5/MD5MessageDigestAlgorithm.java     | 2 ++
 6 files changed, 24 insertions(+)

diff --git 
a/infra/algorithm/type/cryptographic/type/aes/src/main/java/org/apache/shardingsphere/infra/algorithm/cryptographic/aes/AESCryptographicAlgorithm.java
 
b/infra/algorithm/type/cryptographic/type/aes/src/main/java/org/apache/shardingsphere/infra/algorithm/cryptographic/aes/AESCryptographicAlgorithm.java
index 1eaa73cea69..489d892f0a4 100644
--- 
a/infra/algorithm/type/cryptographic/type/aes/src/main/java/org/apache/shardingsphere/infra/algorithm/cryptographic/aes/AESCryptographicAlgorithm.java
+++ 
b/infra/algorithm/type/cryptographic/type/aes/src/main/java/org/apache/shardingsphere/infra/algorithm/cryptographic/aes/AESCryptographicAlgorithm.java
@@ -20,6 +20,7 @@ package 
org.apache.shardingsphere.infra.algorithm.cryptographic.aes;
 import lombok.SneakyThrows;
 import 
org.apache.shardingsphere.infra.algorithm.cryptographic.spi.CryptographicAlgorithm;
 import 
org.apache.shardingsphere.infra.algorithm.cryptographic.spi.CryptographicPropertiesProvider;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 
 import javax.crypto.Cipher;
@@ -41,6 +42,7 @@ public final class AESCryptographicAlgorithm implements 
CryptographicAlgorithm {
         propsProvider = 
TypedSPILoader.getService(CryptographicPropertiesProvider.class, "DEFAULT", 
props);
     }
     
+    @HighFrequencyInvocation
     @SneakyThrows(GeneralSecurityException.class)
     @Override
     public String encrypt(final Object plainValue) {
@@ -51,10 +53,12 @@ public final class AESCryptographicAlgorithm implements 
CryptographicAlgorithm {
         return encode(result);
     }
     
+    @HighFrequencyInvocation
     private String encode(final byte[] value) {
         return Base64.getEncoder().encodeToString(value);
     }
     
+    @HighFrequencyInvocation
     @SneakyThrows(GeneralSecurityException.class)
     @Override
     public Object decrypt(final Object cipherValue) {
@@ -65,10 +69,12 @@ public final class AESCryptographicAlgorithm implements 
CryptographicAlgorithm {
         return new String(result, StandardCharsets.UTF_8);
     }
     
+    @HighFrequencyInvocation
     private byte[] decode(final String value) {
         return Base64.getDecoder().decode(value);
     }
     
+    @HighFrequencyInvocation
     private Cipher getCipher(final int decryptMode) throws 
GeneralSecurityException {
         Cipher result = Cipher.getInstance(getType());
         result.init(decryptMode, new 
SecretKeySpec(propsProvider.getSecretKey(), getType()));
diff --git 
a/infra/algorithm/type/key-generator/type/snowflake/src/main/java/org/apache/shardingsphere/infra/algorithm/keygen/snowflake/SnowflakeKeyGenerateAlgorithm.java
 
b/infra/algorithm/type/key-generator/type/snowflake/src/main/java/org/apache/shardingsphere/infra/algorithm/keygen/snowflake/SnowflakeKeyGenerateAlgorithm.java
index 643e83959fb..c99ecd67ddf 100644
--- 
a/infra/algorithm/type/key-generator/type/snowflake/src/main/java/org/apache/shardingsphere/infra/algorithm/keygen/snowflake/SnowflakeKeyGenerateAlgorithm.java
+++ 
b/infra/algorithm/type/key-generator/type/snowflake/src/main/java/org/apache/shardingsphere/infra/algorithm/keygen/snowflake/SnowflakeKeyGenerateAlgorithm.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.infra.algorithm.core.context.AlgorithmSQLContex
 import 
org.apache.shardingsphere.infra.algorithm.core.exception.AlgorithmExecuteException;
 import 
org.apache.shardingsphere.infra.algorithm.core.exception.AlgorithmInitializationException;
 import 
org.apache.shardingsphere.infra.algorithm.keygen.spi.KeyGenerateAlgorithm;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
 import 
org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContextAware;
@@ -120,6 +121,7 @@ public final class SnowflakeKeyGenerateAlgorithm implements 
KeyGenerateAlgorithm
         }
     }
     
+    @HighFrequencyInvocation
     @Override
     public Collection<Long> generateKeys(final AlgorithmSQLContext context, 
final int keyGenerateCount) {
         Collection<Long> result = new LinkedList<>();
@@ -129,6 +131,7 @@ public final class SnowflakeKeyGenerateAlgorithm implements 
KeyGenerateAlgorithm
         return result;
     }
     
+    @HighFrequencyInvocation
     private synchronized Long generateKey() {
         long currentMillis = timeService.getCurrentMillis();
         if (waitTolerateTimeDifferenceIfNeed(currentMillis)) {
@@ -167,12 +170,14 @@ public final class SnowflakeKeyGenerateAlgorithm 
implements KeyGenerateAlgorithm
         return result;
     }
     
+    @HighFrequencyInvocation
     private void vibrateSequenceOffset() {
         if (!sequenceOffset.compareAndSet(maxVibrationOffset, 0)) {
             sequenceOffset.incrementAndGet();
         }
     }
     
+    @HighFrequencyInvocation
     private int getWorkerId() {
         return null == computeNodeInstanceContext.get() ? DEFAULT_WORKER_ID : 
computeNodeInstanceContext.get().getWorkerId();
     }
diff --git 
a/infra/algorithm/type/load-balancer/type/random/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/random/RandomLoadBalanceAlgorithm.java
 
b/infra/algorithm/type/load-balancer/type/random/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/random/RandomLoadBalanceAlgorithm.java
index 7d8787b3958..152010fdcc0 100644
--- 
a/infra/algorithm/type/load-balancer/type/random/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/random/RandomLoadBalanceAlgorithm.java
+++ 
b/infra/algorithm/type/load-balancer/type/random/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/random/RandomLoadBalanceAlgorithm.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.infra.algorithm.loadbalancer.random;
 
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.spi.LoadBalanceAlgorithm;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
@@ -27,6 +28,7 @@ import java.util.concurrent.ThreadLocalRandom;
  */
 public final class RandomLoadBalanceAlgorithm implements LoadBalanceAlgorithm {
     
+    @HighFrequencyInvocation
     @Override
     public String getTargetName(final String groupName, final List<String> 
availableTargetNames) {
         return 
availableTargetNames.get(ThreadLocalRandom.current().nextInt(availableTargetNames.size()));
diff --git 
a/infra/algorithm/type/load-balancer/type/round-robin/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/round/robin/RoundRobinLoadBalanceAlgorithm.java
 
b/infra/algorithm/type/load-balancer/type/round-robin/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/round/robin/RoundRobinLoadBalanceAlgorithm.java
index 4df251d37b2..6511e110bdb 100644
--- 
a/infra/algorithm/type/load-balancer/type/round-robin/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/round/robin/RoundRobinLoadBalanceAlgorithm.java
+++ 
b/infra/algorithm/type/load-balancer/type/round-robin/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/round/robin/RoundRobinLoadBalanceAlgorithm.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.infra.algorithm.loadbalancer.round.robin;
 
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.spi.LoadBalanceAlgorithm;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -29,6 +30,7 @@ public final class RoundRobinLoadBalanceAlgorithm implements 
LoadBalanceAlgorith
     
     private final AtomicInteger count = new AtomicInteger(0);
     
+    @HighFrequencyInvocation
     @Override
     public String getTargetName(final String groupName, final List<String> 
availableTargetNames) {
         return availableTargetNames.get(Math.abs(count.getAndIncrement()) % 
availableTargetNames.size());
diff --git 
a/infra/algorithm/type/load-balancer/type/weight/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/weight/WeightLoadBalanceAlgorithm.java
 
b/infra/algorithm/type/load-balancer/type/weight/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/weight/WeightLoadBalanceAlgorithm.java
index 247ddb8dfe9..feb23fb7a87 100644
--- 
a/infra/algorithm/type/load-balancer/type/weight/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/weight/WeightLoadBalanceAlgorithm.java
+++ 
b/infra/algorithm/type/load-balancer/type/weight/src/main/java/org/apache/shardingsphere/infra/algorithm/loadbalancer/weight/WeightLoadBalanceAlgorithm.java
@@ -20,6 +20,7 @@ package 
org.apache.shardingsphere.infra.algorithm.loadbalancer.weight;
 import com.google.common.base.Preconditions;
 import 
org.apache.shardingsphere.infra.algorithm.core.exception.AlgorithmInitializationException;
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.spi.LoadBalanceAlgorithm;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 
 import java.util.Arrays;
@@ -63,6 +64,7 @@ public final class WeightLoadBalanceAlgorithm implements 
LoadBalanceAlgorithm {
                 () -> new AlgorithmInitializationException(this, "Target `%s` 
is required in database `%s`.", each, databaseName)));
     }
     
+    @HighFrequencyInvocation
     @Override
     public String getTargetName(final String groupName, final List<String> 
availableTargetNames) {
         double[] weight = weightMap.containsKey(groupName) && 
weightMap.get(groupName).length == availableTargetNames.size() ? 
weightMap.get(groupName) : initWeight(availableTargetNames);
@@ -70,6 +72,7 @@ public final class WeightLoadBalanceAlgorithm implements 
LoadBalanceAlgorithm {
         return getAvailableTargetName(availableTargetNames, weight);
     }
     
+    @HighFrequencyInvocation
     private String getAvailableTargetName(final List<String> 
availableTargetNames, final double[] weight) {
         double randomWeight = ThreadLocalRandom.current().nextDouble(0D, 1D);
         int index = Arrays.binarySearch(weight, randomWeight);
@@ -80,6 +83,7 @@ public final class WeightLoadBalanceAlgorithm implements 
LoadBalanceAlgorithm {
         return availableTargetNames.get(index);
     }
     
+    @HighFrequencyInvocation
     private double[] initWeight(final List<String> availableTargetNames) {
         double[] result = getWeights(availableTargetNames);
         Preconditions.checkState(!(0 != result.length && 
Math.abs(result[result.length - 1] - 1.0D) >= ACCURACY_THRESHOLD),
@@ -87,6 +91,7 @@ public final class WeightLoadBalanceAlgorithm implements 
LoadBalanceAlgorithm {
         return result;
     }
     
+    @HighFrequencyInvocation
     private double[] getWeights(final List<String> availableTargetNames) {
         double[] exactWeights = new double[availableTargetNames.size()];
         int index = 0;
@@ -105,6 +110,7 @@ public final class WeightLoadBalanceAlgorithm implements 
LoadBalanceAlgorithm {
         return calculateWeight(exactWeights);
     }
     
+    @HighFrequencyInvocation
     private double[] calculateWeight(final double[] exactWeights) {
         double[] result = new double[exactWeights.length];
         double randomRange = 0D;
@@ -115,6 +121,7 @@ public final class WeightLoadBalanceAlgorithm implements 
LoadBalanceAlgorithm {
         return result;
     }
     
+    @HighFrequencyInvocation
     private double getWeightValue(final String readDataSourceName) {
         double result = weightConfigMap.get(readDataSourceName);
         if (Double.isInfinite(result)) {
diff --git 
a/infra/algorithm/type/message-digest/type/md5/src/main/java/org/apache/shardingsphere/infra/algorithm/messagedigest/md5/MD5MessageDigestAlgorithm.java
 
b/infra/algorithm/type/message-digest/type/md5/src/main/java/org/apache/shardingsphere/infra/algorithm/messagedigest/md5/MD5MessageDigestAlgorithm.java
index def58df0959..845f56c9bb8 100644
--- 
a/infra/algorithm/type/message-digest/type/md5/src/main/java/org/apache/shardingsphere/infra/algorithm/messagedigest/md5/MD5MessageDigestAlgorithm.java
+++ 
b/infra/algorithm/type/message-digest/type/md5/src/main/java/org/apache/shardingsphere/infra/algorithm/messagedigest/md5/MD5MessageDigestAlgorithm.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.infra.algorithm.messagedigest.md5;
 
 import org.apache.commons.codec.digest.DigestUtils;
 import 
org.apache.shardingsphere.infra.algorithm.messagedigest.spi.MessageDigestAlgorithm;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 
 import java.util.Properties;
 
@@ -36,6 +37,7 @@ public final class MD5MessageDigestAlgorithm implements 
MessageDigestAlgorithm {
         salt = props.getProperty(SALT_KEY, "");
     }
     
+    @HighFrequencyInvocation
     @Override
     public String digest(final Object plainValue) {
         return null == plainValue ? null : DigestUtils.md5Hex(plainValue + 
salt);

Reply via email to