Skip to content

Commit 1e9c558

Browse files
committed
add InterruptedException for processSolidityBlock
1 parent 50c76de commit 1e9c558

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

framework/src/main/java/org/tron/program/SolidityNode.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44

55
import java.util.concurrent.ExecutorService;
66
import java.util.concurrent.LinkedBlockingDeque;
7+
import java.util.concurrent.TimeUnit;
78
import java.util.concurrent.atomic.AtomicLong;
89
import javax.annotation.PostConstruct;
910
import javax.annotation.PreDestroy;
1011
import lombok.extern.slf4j.Slf4j;
12+
import org.checkerframework.checker.nullness.qual.NonNull;
1113
import org.springframework.beans.factory.annotation.Autowired;
1214
import org.springframework.context.annotation.Condition;
1315
import org.springframework.context.annotation.ConditionContext;
@@ -25,7 +27,7 @@
2527
import org.tron.protos.Protocol.Block;
2628

2729
@Slf4j(topic = "app")
28-
@Conditional(value = {SolidityNode.SolidityCondition.class})
30+
@Conditional(SolidityNode.SolidityCondition.class)
2931
@Component
3032
public class SolidityNode {
3133

@@ -109,8 +111,15 @@ private void getBlock() {
109111
private void processSolidityBlock() {
110112
while (flag) {
111113
try {
112-
Block block = blockQueue.take();
114+
Block block = blockQueue.poll(exceptionSleepTime, TimeUnit.MILLISECONDS);
115+
if (block == null) {
116+
continue;
117+
}
113118
loopProcessBlock(block);
119+
} catch (InterruptedException e) {
120+
Thread.currentThread().interrupt();
121+
logger.info("processSolidityBlock interrupted.");
122+
return;
114123
} catch (Exception e) {
115124
logger.error(e.getMessage());
116125
sleep(exceptionSleepTime);
@@ -196,9 +205,11 @@ private void resolveCompatibilityIssueIfUsingFullNodeDatabase() {
196205
}
197206

198207
static class SolidityCondition implements Condition {
208+
199209
@Override
200-
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
210+
public boolean matches(@NonNull ConditionContext context,
211+
@NonNull AnnotatedTypeMetadata metadata) {
201212
return Args.getInstance().isSolidityNode();
202213
}
203214
}
204-
}
215+
}

0 commit comments

Comments
 (0)