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

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


The following commit(s) were added to refs/heads/master by this push:
     new 3fb749a4e Bug: Bad attempt to compute absolute value of signed 32-bit 
hashcode (#2151)
3fb749a4e is described below

commit 3fb749a4e40fe65c82741ca2622c052707bfa3f7
Author: zume0127 <[email protected]>
AuthorDate: Tue Dec 6 22:50:13 2022 +0800

    Bug: Bad attempt to compute absolute value of signed 32-bit hashcode (#2151)
    
    * Bug: Bad attempt to compute absolute value of signed 32-bit hashcode
    
    * check code style
---
 .../sharding/impl/RoundRobinByNameJobShardingStrategy.java        | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git 
a/elasticjob-infra/elasticjob-infra-common/src/main/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/RoundRobinByNameJobShardingStrategy.java
 
b/elasticjob-infra/elasticjob-infra-common/src/main/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/RoundRobinByNameJobShardingStrategy.java
index a3cb679d5..dfcf93702 100644
--- 
a/elasticjob-infra/elasticjob-infra-common/src/main/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/RoundRobinByNameJobShardingStrategy.java
+++ 
b/elasticjob-infra/elasticjob-infra-common/src/main/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/RoundRobinByNameJobShardingStrategy.java
@@ -38,7 +38,13 @@ public final class RoundRobinByNameJobShardingStrategy 
implements JobShardingStr
     
     private List<JobInstance> rotateServerList(final List<JobInstance> 
shardingUnits, final String jobName) {
         int shardingUnitsSize = shardingUnits.size();
-        int offset = Math.abs(jobName.hashCode()) % shardingUnitsSize;
+        int jobHashCode = jobName.hashCode();
+        int offset = 0;
+        if (jobHashCode != Integer.MIN_VALUE) {
+            offset = Math.abs(jobHashCode) % shardingUnitsSize;
+        } else {
+            offset = Integer.MIN_VALUE % shardingUnitsSize;
+        }
         if (0 == offset) {
             return shardingUnits;
         }

Reply via email to