Skip to content

Commit cc5488b

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into feature/add_grpc_api
2 parents bd9ed62 + 03e903e commit cc5488b

44 files changed

Lines changed: 542 additions & 259 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public boolean validate() throws ContractValidateException {
158158
long accountNetUsage = ownerCapsule.getNetUsage();
159159
if (null != this.getTx() && this.getTx().isTransactionCreate()) {
160160
accountNetUsage += TransactionUtil.estimateConsumeBandWidthSize(dynamicStore,
161-
ownerCapsule.getBalance());
161+
ownerCapsule.getFrozenV2BalanceForBandwidth());
162162
}
163163
long netUsage = (long) (accountNetUsage * TRX_PRECISION * ((double)
164164
(dynamicStore.getTotalNetWeight()) / dynamicStore.getTotalNetLimit()));

actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import java.util.concurrent.CountDownLatch;
2727
import java.util.concurrent.ExecutionException;
2828
import java.util.concurrent.ExecutorService;
29-
import java.util.concurrent.Executors;
3029
import java.util.concurrent.Future;
3130
import java.util.concurrent.TimeUnit;
3231
import lombok.AllArgsConstructor;
@@ -46,6 +45,7 @@
4645
import org.tron.common.crypto.zksnark.BN128G2;
4746
import org.tron.common.crypto.zksnark.Fp;
4847
import org.tron.common.crypto.zksnark.PairingCheck;
48+
import org.tron.common.es.ExecutorServiceManager;
4949
import org.tron.common.parameter.CommonParameter;
5050
import org.tron.common.runtime.ProgramResult;
5151
import org.tron.common.runtime.vm.DataWord;
@@ -983,11 +983,13 @@ public Pair<Boolean, byte[]> execute(byte[] rawData) {
983983
public static class BatchValidateSign extends PrecompiledContract {
984984

985985
private static final ExecutorService workers;
986+
private static final String workersName = "validate-sign-contract";
986987
private static final int ENGERYPERSIGN = 1500;
987988
private static final int MAX_SIZE = 16;
988989

989990
static {
990-
workers = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() / 2 + 1);
991+
workers = ExecutorServiceManager.newFixedThreadPool(workersName,
992+
Runtime.getRuntime().availableProcessors() / 2 + 1);
991993
}
992994

993995
@Override
@@ -1290,10 +1292,12 @@ public static class VerifyTransferProof extends VerifyProof {
12901292
private static final Integer[] SIZE = {2080, 2368, 2464, 2752};
12911293
private static final ExecutorService workersInConstantCall;
12921294
private static final ExecutorService workersInNonConstantCall;
1295+
private static final String constantCallName = "verify-transfer-constant-call";
1296+
private static final String nonConstantCallName = "verify-transfer-non-constant-call";
12931297

12941298
static {
1295-
workersInConstantCall = Executors.newFixedThreadPool(5);
1296-
workersInNonConstantCall = Executors.newFixedThreadPool(5);
1299+
workersInConstantCall = ExecutorServiceManager.newFixedThreadPool(constantCallName, 5);
1300+
workersInNonConstantCall = ExecutorServiceManager.newFixedThreadPool(nonConstantCallName, 5);
12971301
}
12981302

12991303
@Override
Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11
package org.tron.common.storage.metric;
22

3-
import com.google.common.util.concurrent.ThreadFactoryBuilder;
4-
import java.util.concurrent.Executors;
53
import java.util.concurrent.ScheduledExecutorService;
64
import java.util.concurrent.TimeUnit;
75
import lombok.extern.slf4j.Slf4j;
86
import org.springframework.stereotype.Component;
7+
import org.tron.common.es.ExecutorServiceManager;
98
import org.tron.common.prometheus.Metrics;
109
import org.tron.core.db.common.DbSourceInter;
1110
import org.tron.core.db2.common.DB;
1211

1312
@Slf4j(topic = "metrics")
1413
@Component
1514
public class DbStatService {
16-
private static final ScheduledExecutorService statExecutor =
17-
Executors.newSingleThreadScheduledExecutor(
18-
new ThreadFactoryBuilder().setNameFormat("db-stats-thread-%d").build());
19-
15+
private final String esName = "db-stats";
16+
private final ScheduledExecutorService statExecutor =
17+
ExecutorServiceManager.newSingleThreadScheduledExecutor(esName);
2018

2119
public void register(DB<byte[], byte[]> db) {
2220
if (Metrics.enabled()) {
@@ -32,11 +30,7 @@ public void register(DbSourceInter<byte[]> db) {
3230

3331
public void shutdown() {
3432
if (Metrics.enabled()) {
35-
try {
36-
statExecutor.shutdown();
37-
} catch (Exception e) {
38-
logger.error("{}", e.getMessage());
39-
}
33+
ExecutorServiceManager.shutdownAndAwaitTermination(statExecutor, esName);
4034
}
4135
}
4236
}

chainbase/src/main/java/org/tron/core/capsule/TransactionCapsule.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import java.util.HashMap;
3434
import java.util.List;
3535
import java.util.concurrent.ExecutorService;
36-
import java.util.concurrent.Executors;
3736
import java.util.concurrent.Future;
3837
import java.util.concurrent.atomic.AtomicInteger;
3938
import lombok.Getter;
@@ -43,6 +42,7 @@
4342
import org.tron.common.crypto.ECKey.ECDSASignature;
4443
import org.tron.common.crypto.SignInterface;
4544
import org.tron.common.crypto.SignUtils;
45+
import org.tron.common.es.ExecutorServiceManager;
4646
import org.tron.common.overlay.message.Message;
4747
import org.tron.common.parameter.CommonParameter;
4848
import org.tron.common.utils.ByteArray;
@@ -86,8 +86,9 @@
8686
@Slf4j(topic = "capsule")
8787
public class TransactionCapsule implements ProtoCapsule<Transaction> {
8888

89-
private static final ExecutorService executorService = Executors
90-
.newFixedThreadPool(CommonParameter.getInstance()
89+
private static final String esName = "valid-contract-proto";
90+
private static final ExecutorService executorService = ExecutorServiceManager
91+
.newFixedThreadPool(esName, CommonParameter.getInstance()
9192
.getValidContractProtoThreadNum());
9293
private static final String OWNER_ADDRESS = "ownerAddress_";
9394

chainbase/src/main/java/org/tron/core/db2/core/SnapshotManager.java

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,19 @@
1616
import java.util.Map;
1717
import java.util.Objects;
1818
import java.util.concurrent.ExecutionException;
19-
import java.util.concurrent.ExecutorService;
20-
import java.util.concurrent.Executors;
2119
import java.util.concurrent.Future;
2220
import java.util.concurrent.ScheduledExecutorService;
2321
import java.util.concurrent.TimeUnit;
2422
import java.util.concurrent.atomic.AtomicInteger;
2523
import java.util.concurrent.locks.LockSupport;
2624
import java.util.stream.Collectors;
2725
import javax.annotation.PostConstruct;
28-
import javax.annotation.PreDestroy;
2926
import lombok.Getter;
3027
import lombok.Setter;
3128
import lombok.extern.slf4j.Slf4j;
3229
import org.springframework.beans.factory.annotation.Autowired;
3330
import org.tron.common.error.TronDBException;
31+
import org.tron.common.es.ExecutorServiceManager;
3432
import org.tron.common.parameter.CommonParameter;
3533
import org.tron.common.storage.WriteOptionsWrapper;
3634
import org.tron.common.utils.FileUtil;
@@ -76,6 +74,7 @@ public class SnapshotManager implements RevokingDatabase {
7674
private Map<String, ListeningExecutorService> flushServices = new HashMap<>();
7775

7876
private ScheduledExecutorService pruneCheckpointThread = null;
77+
private final String pruneName = "checkpoint-prune";
7978

8079
@Autowired
8180
@Setter
@@ -95,7 +94,7 @@ public void init() {
9594
checkpointVersion = CommonParameter.getInstance().getStorage().getCheckpointVersion();
9695
// prune checkpoint
9796
if (isV2Open()) {
98-
pruneCheckpointThread = Executors.newSingleThreadScheduledExecutor();
97+
pruneCheckpointThread = ExecutorServiceManager.newSingleThreadScheduledExecutor(pruneName);
9998
pruneCheckpointThread.scheduleWithFixedDelay(() -> {
10099
try {
101100
if (!unChecked) {
@@ -117,18 +116,6 @@ public void init() {
117116
exitThread.start();
118117
}
119118

120-
@PreDestroy
121-
public void close() {
122-
try {
123-
exitThread.interrupt();
124-
// help GC
125-
exitThread = null;
126-
flushServices.values().forEach(ExecutorService::shutdown);
127-
} catch (Exception e) {
128-
logger.warn("exitThread interrupt error", e);
129-
}
130-
}
131-
132119
public static String simpleDecode(byte[] bytes) {
133120
byte[] lengthBytes = Arrays.copyOf(bytes, 4);
134121
int length = Ints.fromByteArray(lengthBytes);
@@ -177,7 +164,8 @@ public void add(IRevokingDB db) {
177164
Chainbase revokingDB = (Chainbase) db;
178165
dbs.add(revokingDB);
179166
flushServices.put(revokingDB.getDbName(),
180-
MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor()));
167+
MoreExecutors.listeningDecorator(ExecutorServiceManager.newSingleThreadExecutor(
168+
"flush-service-" + revokingDB.getDbName())));
181169
}
182170

183171
private void advance() {
@@ -284,8 +272,15 @@ public synchronized void disable() {
284272

285273
@Override
286274
public void shutdown() {
287-
if (pruneCheckpointThread != null) {
288-
pruneCheckpointThread.shutdown();
275+
ExecutorServiceManager.shutdownAndAwaitTermination(pruneCheckpointThread, pruneName);
276+
flushServices.forEach((key, value) -> ExecutorServiceManager.shutdownAndAwaitTermination(value,
277+
"flush-service-" + key));
278+
try {
279+
exitThread.interrupt();
280+
// help GC
281+
exitThread = null;
282+
} catch (Exception e) {
283+
logger.warn("exitThread interrupt error", e);
289284
}
290285
}
291286

common/src/main/java/org/tron/common/es/ExecutorServiceManager.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package org.tron.common.es;
22

33
import com.google.common.util.concurrent.ThreadFactoryBuilder;
4+
import java.util.concurrent.BlockingQueue;
45
import java.util.concurrent.ExecutorService;
56
import java.util.concurrent.Executors;
67
import java.util.concurrent.ScheduledExecutorService;
8+
import java.util.concurrent.ThreadPoolExecutor;
9+
import java.util.concurrent.TimeUnit;
710
import lombok.extern.slf4j.Slf4j;
811

9-
@Slf4j(topic = "common")
12+
@Slf4j(topic = "common-executor")
1013
public class ExecutorServiceManager {
1114

1215
public static ExecutorService newSingleThreadExecutor(String name) {
@@ -29,6 +32,31 @@ public static ScheduledExecutorService newSingleThreadScheduledExecutor(String n
2932
new ThreadFactoryBuilder().setNameFormat(name).setDaemon(isDaemon).build());
3033
}
3134

35+
public static ExecutorService newFixedThreadPool(String name, int fixThreads) {
36+
return newFixedThreadPool(name, fixThreads, false);
37+
}
38+
39+
public static ExecutorService newFixedThreadPool(String name, int fixThreads, boolean isDaemon) {
40+
return Executors.newFixedThreadPool(fixThreads,
41+
new ThreadFactoryBuilder().setNameFormat(name + "-%d").setDaemon(isDaemon).build());
42+
}
43+
44+
public static ExecutorService newThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
45+
long keepAliveTime, TimeUnit unit,
46+
BlockingQueue<Runnable> workQueue,
47+
String name) {
48+
return newThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
49+
name, false);
50+
}
51+
52+
public static ExecutorService newThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
53+
long keepAliveTime, TimeUnit unit,
54+
BlockingQueue<Runnable> workQueue,
55+
String name, boolean isDaemon) {
56+
return new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
57+
new ThreadFactoryBuilder().setNameFormat(name + "-%d").setDaemon(isDaemon).build());
58+
}
59+
3260
public static void shutdownAndAwaitTermination(ExecutorService pool, String name) {
3361
if (pool == null) {
3462
return;

common/src/main/java/org/tron/common/parameter/CommonParameter.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.tron.core.config.args.Overlay;
1919
import org.tron.core.config.args.SeedNode;
2020
import org.tron.core.config.args.Storage;
21+
import org.tron.p2p.P2pConfig;
2122
import org.tron.p2p.dns.update.PublishConfig;
2223

2324
public class CommonParameter {
@@ -169,6 +170,8 @@ public class CommonParameter {
169170
@Setter
170171
public int minParticipationRate;
171172
@Getter
173+
public P2pConfig p2pConfig;
174+
@Getter
172175
@Setter
173176
public int nodeListenPort;
174177
@Getter
@@ -179,21 +182,9 @@ public class CommonParameter {
179182
public String nodeExternalIp;
180183
@Getter
181184
@Setter
182-
public boolean nodeDiscoveryPublicHomeNode;
183-
@Getter
184-
@Setter
185-
public long nodeDiscoveryPingTimeout;
186-
@Getter
187-
@Setter
188-
public long nodeP2pPingInterval;
189-
@Getter
190-
@Setter
191185
public int nodeP2pVersion;
192186
@Getter
193187
@Setter
194-
public String p2pNodeId;
195-
@Getter
196-
@Setter
197188
public boolean nodeEnableIpv6 = false;
198189
@Getter
199190
@Setter

common/src/main/java/org/tron/core/Constant.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,6 @@ public class Constant {
101101
public static final String NODE_MAX_CONNECTIONS_WITH_SAME_IP = "node.maxConnectionsWithSameIp";
102102
public static final String NODE_MIN_PARTICIPATION_RATE = "node.minParticipationRate";
103103
public static final String NODE_LISTEN_PORT = "node.listen.port";
104-
public static final String NODE_DISCOVERY_PUBLIC_HOME_NODE = "node.discovery.public.home.node";
105-
public static final String NODE_DISCOVERY_PING_TIMEOUT = "node.discovery.ping.timeout";
106-
107-
public static final String NODE_P2P_PING_INTERVAL = "node.p2p.pingInterval";
108104
public static final String NODE_P2P_VERSION = "node.p2p.version";
109105
public static final String NODE_ENABLE_IPV6 = "node.enableIpv6";
110106
public static final String NODE_DNS_TREE_URLS = "node.dns.treeUrls";
@@ -284,7 +280,6 @@ public class Constant {
284280
public static final String NODE_DISCOVERY_BIND_IP = "node.discovery.bind.ip";
285281

286282
public static final String NODE_DISCOVERY_EXTERNAL_IP = "node.discovery.external.ip";
287-
public static final String AMAZONAWS_URL = "http://checkip.amazonaws.com";
288283

289284
public static final String NODE_BACKUP_PRIORITY = "node.backup.priority";
290285
public static final String NODE_BACKUP_PORT = "node.backup.port";

consensus/src/main/java/org/tron/consensus/pbft/PbftManager.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package org.tron.consensus.pbft;
22

33
import com.google.protobuf.ByteString;
4+
import java.io.Closeable;
45
import java.util.List;
56
import java.util.concurrent.ExecutorService;
6-
import java.util.concurrent.Executors;
77
import javax.annotation.PostConstruct;
88
import lombok.extern.slf4j.Slf4j;
99
import org.springframework.beans.factory.annotation.Autowired;
1010
import org.springframework.stereotype.Component;
11+
import org.tron.common.es.ExecutorServiceManager;
1112
import org.tron.consensus.base.Param;
1213
import org.tron.consensus.base.Param.Miner;
1314
import org.tron.consensus.dpos.MaintenanceManager;
@@ -18,7 +19,7 @@
1819

1920
@Slf4j(topic = "pbft")
2021
@Component
21-
public class PbftManager {
22+
public class PbftManager implements Closeable {
2223

2324
@Autowired
2425
private PbftMessageHandle pbftMessageHandle;
@@ -29,8 +30,8 @@ public class PbftManager {
2930
@Autowired
3031
private ChainBaseManager chainBaseManager;
3132

32-
private ExecutorService executorService = Executors.newFixedThreadPool(10,
33-
r -> new Thread(r, "Pbft"));
33+
private final String esName = "pbft-msg-manager";
34+
private ExecutorService executorService = ExecutorServiceManager.newFixedThreadPool(esName, 10);
3435

3536
@PostConstruct
3637
public void init() {
@@ -111,4 +112,9 @@ public boolean verifyMsg(PbftBaseMessage msg) {
111112
return witnessList.contains(ByteString.copyFrom(msg.getPublicKey()));
112113
}
113114

115+
@Override
116+
public void close() {
117+
ExecutorServiceManager.shutdownAndAwaitTermination(executorService, esName);
118+
}
119+
114120
}

crypto/src/main/java/org/tron/common/crypto/SignUtils.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,14 @@ public static SignInterface fromPrivate(byte[] privKeyBytes, boolean isECKeyCryp
2626
public static byte[] signatureToAddress(
2727
byte[] messageHash, String signatureBase64, boolean isECKeyCryptoEngine)
2828
throws SignatureException {
29-
if (isECKeyCryptoEngine) {
30-
return ECKey.signatureToAddress(messageHash, signatureBase64);
29+
try {
30+
if (isECKeyCryptoEngine) {
31+
return ECKey.signatureToAddress(messageHash, signatureBase64);
32+
}
33+
return SM2.signatureToAddress(messageHash, signatureBase64);
34+
} catch (Exception e) {
35+
throw new SignatureException(e);
3136
}
32-
return SM2.signatureToAddress(messageHash, signatureBase64);
3337
}
3438

3539
public static SignatureInterface fromComponents(

0 commit comments

Comments
 (0)