Skip to content

Commit f9a1dd9

Browse files
EvenLjjliujianjun.ljj
and
liujianjun.ljj
committed
fix method timeout resolve problem (sofastack#1478)
Co-authored-by: liujianjun.ljj <[email protected]>
1 parent 562eba5 commit f9a1dd9

File tree

2 files changed

+46
-2
lines changed

2 files changed

+46
-2
lines changed

core/api/src/main/java/com/alipay/sofa/rpc/config/ConsumerConfig.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -933,8 +933,11 @@ public int getMethodRetries(String methodName) {
933933
* @return the time out
934934
*/
935935
public int getMethodTimeout(String methodName) {
936-
return (Integer) getMethodConfigValue(methodName, RpcConstants.CONFIG_KEY_TIMEOUT,
937-
getTimeout());
936+
Object methodTimeout = getMethodConfigValue(methodName, RpcConstants.CONFIG_KEY_TIMEOUT);
937+
if (methodTimeout == null || ((Integer) methodTimeout) == 0) {
938+
return getTimeout();
939+
}
940+
return (Integer) methodTimeout;
938941
}
939942

940943
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.alipay.sofa.rpc.config;
2+
3+
import com.alipay.sofa.rpc.invoke.Invoker;
4+
import org.junit.Assert;
5+
import org.junit.Test;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
/**
11+
* @author Even
12+
* @date 2025/3/4 21:36
13+
*/
14+
public class ConsumerConfigTest {
15+
16+
@Test
17+
public void testMethodTimeout() {
18+
ConsumerConfig<Invoker> consumerConfig = new ConsumerConfig<>();
19+
consumerConfig.setTimeout(4000);
20+
consumerConfig.setInterfaceId(Invoker.class.getName());
21+
consumerConfig.getConfigValueCache(true);
22+
Assert.assertEquals(4000, consumerConfig.getMethodTimeout("invoke"));
23+
24+
List<MethodConfig> methodConfigs = new ArrayList<>();
25+
MethodConfig methodConfig = new MethodConfig();
26+
methodConfig.setName("invoke");
27+
methodConfigs.add(methodConfig);
28+
consumerConfig.setMethods(methodConfigs);
29+
consumerConfig.getConfigValueCache(true);
30+
Assert.assertEquals(4000, consumerConfig.getMethodTimeout("invoke"));
31+
32+
methodConfig.setTimeout(5000);
33+
consumerConfig.getConfigValueCache(true);
34+
Assert.assertEquals(5000, consumerConfig.getMethodTimeout("invoke"));
35+
36+
methodConfig.setTimeout(-1);
37+
consumerConfig.getConfigValueCache(true);
38+
Assert.assertEquals(-1, consumerConfig.getMethodTimeout("invoke"));
39+
}
40+
41+
}

0 commit comments

Comments
 (0)