Skip to content

Commit 505e939

Browse files
committed
use TimeoutInterceptor for each grpc call
1 parent 4079b88 commit 505e939

File tree

7 files changed

+64
-35
lines changed

7 files changed

+64
-35
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.tron.common.utils;
2+
3+
import io.grpc.CallOptions;
4+
import io.grpc.Channel;
5+
import io.grpc.ClientCall;
6+
import io.grpc.ClientInterceptor;
7+
import io.grpc.MethodDescriptor;
8+
import java.util.concurrent.TimeUnit;
9+
10+
11+
public class TimeoutInterceptor implements ClientInterceptor {
12+
13+
private final long timeout;
14+
15+
/**
16+
* @param timeout ms
17+
*/
18+
public TimeoutInterceptor(long timeout) {
19+
this.timeout = timeout;
20+
}
21+
22+
@Override
23+
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
24+
MethodDescriptor<ReqT, RespT> method,
25+
CallOptions callOptions,
26+
Channel next) {
27+
return next.newCall(method,
28+
callOptions.withDeadlineAfter(timeout, TimeUnit.MILLISECONDS));
29+
}
30+
}

framework/src/test/java/org/tron/core/event/BlockEventGetTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,13 @@ public static String dbPath() {
8484
@BeforeClass
8585
public static void init() {
8686
Args.setParam(new String[] {"--output-directory", dbPath()}, Constant.TEST_CONF);
87+
context = new TronApplicationContext(DefaultConfig.class);
8788
}
8889

8990
@Before
9091
public void before() throws IOException {
9192
Args.getInstance().setNodeListenPort(10000 + port.incrementAndGet());
9293

93-
context = new TronApplicationContext(DefaultConfig.class);
94-
9594
dbManager = context.getBean(Manager.class);
9695
setManager(dbManager);
9796

@@ -143,9 +142,9 @@ public void test() throws Exception {
143142
+ "57c973388f044038eff0e6474425b38037e75e66d6b3047647290605449c7764736f6c63430008140033";
144143
Protocol.Transaction trx = TvmTestUtils.generateDeploySmartContractAndGetTransaction(
145144
"TestTRC20", address, "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\""
146-
+ ":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"}"
147-
+ ",{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\","
148-
+ "\"type\":\"event\"}]", code, 0, (long) 1e9, 100, null, 1);
145+
+ ":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\""
146+
+ ":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\""
147+
+ ":\"Transfer\",\"type\":\"event\"}]", code, 0, (long) 1e9, 100, null, 1);
149148
trx = trx.toBuilder().addRet(
150149
Protocol.Transaction.Result.newBuilder()
151150
.setContractRetValue(Protocol.Transaction.Result.contractResult.SUCCESS_VALUE)

framework/src/test/java/org/tron/core/services/RpcApiServicesTest.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.grpc.ManagedChannelBuilder;
1212
import java.io.IOException;
1313
import java.util.Objects;
14-
import java.util.concurrent.TimeUnit;
1514
import org.junit.AfterClass;
1615
import org.junit.Assert;
1716
import org.junit.BeforeClass;
@@ -54,6 +53,7 @@
5453
import org.tron.common.utils.ByteArray;
5554
import org.tron.common.utils.PublicMethod;
5655
import org.tron.common.utils.Sha256Hash;
56+
import org.tron.common.utils.TimeoutInterceptor;
5757
import org.tron.core.Constant;
5858
import org.tron.core.Wallet;
5959
import org.tron.core.capsule.AccountCapsule;
@@ -160,26 +160,23 @@ public static void init() throws IOException {
160160

161161
channelFull = ManagedChannelBuilder.forTarget(fullNode)
162162
.usePlaintext()
163+
.intercept(new TimeoutInterceptor(5000))
163164
.build();
164165
channelPBFT = ManagedChannelBuilder.forTarget(pBFTNode)
165166
.usePlaintext()
167+
.intercept(new TimeoutInterceptor(5000))
166168
.build();
167169
channelSolidity = ManagedChannelBuilder.forTarget(solidityNode)
168170
.usePlaintext()
171+
.intercept(new TimeoutInterceptor(5000))
169172
.build();
170173
context = new TronApplicationContext(DefaultConfig.class);
171-
databaseBlockingStubFull = DatabaseGrpc.newBlockingStub(channelFull)
172-
.withDeadlineAfter(5, TimeUnit.SECONDS);
173-
databaseBlockingStubSolidity = DatabaseGrpc.newBlockingStub(channelSolidity)
174-
.withDeadlineAfter(5, TimeUnit.SECONDS);
175-
databaseBlockingStubPBFT = DatabaseGrpc.newBlockingStub(channelPBFT)
176-
.withDeadlineAfter(5, TimeUnit.SECONDS);
177-
blockingStubFull = WalletGrpc.newBlockingStub(channelFull)
178-
.withDeadlineAfter(5, TimeUnit.SECONDS);
179-
blockingStubSolidity = WalletSolidityGrpc.newBlockingStub(channelSolidity)
180-
.withDeadlineAfter(5, TimeUnit.SECONDS);
181-
blockingStubPBFT = WalletSolidityGrpc.newBlockingStub(channelPBFT)
182-
.withDeadlineAfter(5, TimeUnit.SECONDS);
174+
databaseBlockingStubFull = DatabaseGrpc.newBlockingStub(channelFull);
175+
databaseBlockingStubSolidity = DatabaseGrpc.newBlockingStub(channelSolidity);
176+
databaseBlockingStubPBFT = DatabaseGrpc.newBlockingStub(channelPBFT);
177+
blockingStubFull = WalletGrpc.newBlockingStub(channelFull);
178+
blockingStubSolidity = WalletSolidityGrpc.newBlockingStub(channelSolidity);
179+
blockingStubPBFT = WalletSolidityGrpc.newBlockingStub(channelPBFT);
183180

184181
Manager manager = context.getBean(Manager.class);
185182

framework/src/test/java/org/tron/core/services/WalletApiTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.tron.common.application.ApplicationFactory;
1717
import org.tron.common.application.TronApplicationContext;
1818
import org.tron.common.utils.PublicMethod;
19+
import org.tron.common.utils.TimeoutInterceptor;
1920
import org.tron.core.Constant;
2021
import org.tron.core.config.DefaultConfig;
2122
import org.tron.core.config.args.Args;
@@ -48,10 +49,10 @@ public void listNodesTest() {
4849
Args.getInstance().getRpcPort());
4950
io.grpc.ManagedChannel channel = ManagedChannelBuilder.forTarget(fullNode)
5051
.usePlaintext()
52+
.intercept(new TimeoutInterceptor(5000))
5153
.build();
5254
try {
53-
WalletGrpc.WalletBlockingStub walletStub = WalletGrpc.newBlockingStub(channel)
54-
.withDeadlineAfter(5, TimeUnit.SECONDS);
55+
WalletGrpc.WalletBlockingStub walletStub = WalletGrpc.newBlockingStub(channel);
5556
Assert.assertTrue(walletStub.listNodes(EmptyMessage.getDefaultInstance())
5657
.getNodesList().isEmpty());
5758
} finally {

framework/src/test/java/org/tron/core/services/filter/LiteFnQueryGrpcInterceptorTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.tron.common.application.ApplicationFactory;
2222
import org.tron.common.application.TronApplicationContext;
2323
import org.tron.common.utils.PublicMethod;
24+
import org.tron.common.utils.TimeoutInterceptor;
2425
import org.tron.core.ChainBaseManager;
2526
import org.tron.core.Constant;
2627
import org.tron.core.config.DefaultConfig;
@@ -67,20 +68,20 @@ public static void init() throws IOException {
6768
Args.getInstance().getRpcOnPBFTPort());
6869
channelFull = ManagedChannelBuilder.forTarget(fullnode)
6970
.usePlaintext()
71+
.intercept(new TimeoutInterceptor(5000))
7072
.build();
7173
channelSolidity = ManagedChannelBuilder.forTarget(solidityNode)
7274
.usePlaintext()
75+
.intercept(new TimeoutInterceptor(5000))
7376
.build();
7477
channelpBFT = ManagedChannelBuilder.forTarget(pBFTNode)
7578
.usePlaintext()
79+
.intercept(new TimeoutInterceptor(5000))
7680
.build();
7781
context = new TronApplicationContext(DefaultConfig.class);
78-
blockingStubFull = WalletGrpc.newBlockingStub(channelFull)
79-
.withDeadlineAfter(5, TimeUnit.SECONDS);
80-
blockingStubSolidity = WalletSolidityGrpc.newBlockingStub(channelSolidity)
81-
.withDeadlineAfter(5, TimeUnit.SECONDS);
82-
blockingStubpBFT = WalletSolidityGrpc.newBlockingStub(channelpBFT)
83-
.withDeadlineAfter(5, TimeUnit.SECONDS);
82+
blockingStubFull = WalletGrpc.newBlockingStub(channelFull);
83+
blockingStubSolidity = WalletSolidityGrpc.newBlockingStub(channelSolidity);
84+
blockingStubpBFT = WalletSolidityGrpc.newBlockingStub(channelpBFT);
8485
chainBaseManager = context.getBean(ChainBaseManager.class);
8586
Application appTest = ApplicationFactory.create(context);
8687
appTest.startup();

framework/src/test/java/org/tron/core/services/filter/RpcApiAccessInterceptorTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.tron.common.application.ApplicationFactory;
3434
import org.tron.common.application.TronApplicationContext;
3535
import org.tron.common.utils.PublicMethod;
36+
import org.tron.common.utils.TimeoutInterceptor;
3637
import org.tron.core.Constant;
3738
import org.tron.core.config.DefaultConfig;
3839
import org.tron.core.config.args.Args;
@@ -74,22 +75,22 @@ public static void init() throws IOException {
7475

7576
channelFull = ManagedChannelBuilder.forTarget(fullNode)
7677
.usePlaintext()
78+
.intercept(new TimeoutInterceptor(5000))
7779
.build();
7880
channelPBFT = ManagedChannelBuilder.forTarget(pBFTNode)
7981
.usePlaintext()
82+
.intercept(new TimeoutInterceptor(5000))
8083
.build();
8184
channelSolidity = ManagedChannelBuilder.forTarget(solidityNode)
8285
.usePlaintext()
86+
.intercept(new TimeoutInterceptor(5000))
8387
.build();
8488

8589
context = new TronApplicationContext(DefaultConfig.class);
8690

87-
blockingStubFull = WalletGrpc.newBlockingStub(channelFull)
88-
.withDeadlineAfter(5, TimeUnit.SECONDS);
89-
blockingStubSolidity = WalletSolidityGrpc.newBlockingStub(channelSolidity)
90-
.withDeadlineAfter(5, TimeUnit.SECONDS);
91-
blockingStubPBFT = WalletSolidityGrpc.newBlockingStub(channelPBFT)
92-
.withDeadlineAfter(5, TimeUnit.SECONDS);
91+
blockingStubFull = WalletGrpc.newBlockingStub(channelFull);
92+
blockingStubSolidity = WalletSolidityGrpc.newBlockingStub(channelSolidity);
93+
blockingStubPBFT = WalletSolidityGrpc.newBlockingStub(channelPBFT);
9394

9495
Application appTest = ApplicationFactory.create(context);
9596
appTest.startup();

plugins/src/test/java/org/tron/plugins/DbLiteTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.io.File;
88
import java.io.IOException;
99
import java.nio.file.Paths;
10-
import java.util.concurrent.TimeUnit;
1110
import lombok.extern.slf4j.Slf4j;
1211
import org.junit.After;
1312
import org.junit.Rule;
@@ -20,6 +19,7 @@
2019
import org.tron.common.crypto.ECKey;
2120
import org.tron.common.utils.FileUtil;
2221
import org.tron.common.utils.PublicMethod;
22+
import org.tron.common.utils.TimeoutInterceptor;
2323
import org.tron.common.utils.Utils;
2424
import org.tron.core.config.DefaultConfig;
2525
import org.tron.core.config.args.Args;
@@ -52,9 +52,9 @@ public void startApp() {
5252
Args.getInstance().getRpcPort());
5353
channelFull = ManagedChannelBuilder.forTarget(fullNode)
5454
.usePlaintext()
55+
.intercept(new TimeoutInterceptor(5000))
5556
.build();
56-
blockingStubFull = WalletGrpc.newBlockingStub(channelFull)
57-
.withDeadlineAfter(5, TimeUnit.SECONDS);
57+
blockingStubFull = WalletGrpc.newBlockingStub(channelFull);
5858
}
5959

6060
/**

0 commit comments

Comments
 (0)