Skip to content

Commit 82fdee6

Browse files
committed
Merge branch 'develop' of https://github.com/tronprotocol/java-tron into develop
2 parents f0f63f2 + 79051b4 commit 82fdee6

File tree

15 files changed

+111
-110
lines changed

15 files changed

+111
-110
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ addons:
99
ssh_known_hosts:
1010
- 47.93.9.236:22008
1111
skip_build:
12-
- README.md
12+
- README.md
1313
- LICENSE
1414
deploy:
1515
provider: script

build.gradle

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ apply plugin: 'com.google.protobuf'
66
apply plugin: 'application'
77
apply plugin: 'checkstyle'
88
apply plugin: 'com.github.johnrengelman.shadow'
9+
apply plugin: "jacoco"
10+
911

1012
sourceCompatibility = 1.8
1113
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
@@ -33,6 +35,11 @@ def versions = [
3335
checkstyle: '8.7',
3436
]
3537

38+
jacoco {
39+
toolVersion = "0.8.1"
40+
}
41+
42+
3643
configurations {
3744
checkstyleConfig
3845

@@ -215,6 +222,10 @@ test {
215222
testLogging {
216223
exceptionFormat = 'full'
217224
}
225+
jacoco {
226+
append = false
227+
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
228+
}
218229
}
219230

220231
task stest(type:Test){

src/main/java/org/tron/common/overlay/server/Channel.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
*/
1818
package org.tron.common.overlay.server;
1919

20-
import io.netty.channel.ChannelFutureListener;
2120
import io.netty.channel.ChannelHandlerContext;
2221
import io.netty.channel.ChannelPipeline;
2322
import io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
@@ -138,7 +137,6 @@ public void publicHandshakeFinished(ChannelHandlerContext ctx, HelloMessage msg)
138137
setStartTime(msg.getTimestamp());
139138
setTronState(TronState.HANDSHAKE_FINISHED);
140139
getNodeStatistics().p2pHandShake.add();
141-
channelManager.add(this);
142140
logger.info("Finish handshake with {}.", ctx.channel().remoteAddress());
143141
}
144142

src/main/java/org/tron/common/overlay/server/ChannelManager.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ public Set<String> nodesInUse() {
8585

8686
public void disconnect(Channel peer, ReasonCode reason) {
8787
peer.disconnect(reason);
88-
InetSocketAddress socketAddress = (InetSocketAddress)peer.getChannelHandlerContext().channel().remoteAddress();
88+
InetSocketAddress socketAddress = (InetSocketAddress) peer.getChannelHandlerContext().channel()
89+
.remoteAddress();
8990
recentlyDisconnected.put(socketAddress.getAddress(), new Date());
9091
}
9192

@@ -115,34 +116,30 @@ public boolean isRecentlyDisconnected(InetAddress peerAddr) {
115116
}
116117
}
117118

118-
public void add(Channel peer) {
119-
if (isShouldAddToActivePeers(peer)) {
120-
activePeers.put(peer.getNodeIdWrapper(), peer);
121-
syncPool.onConnect(peer);
122-
logger.info("Add active peer {}, total active peers: {}", peer, activePeers.size());
123-
}
124-
}
125-
126-
private boolean isShouldAddToActivePeers(Channel peer) {
119+
public synchronized boolean procPeer(Channel peer) {
127120
if (peer.getNodeStatistics().isPenalized()) {
128121
disconnect(peer, peer.getNodeStatistics().getDisconnectReason());
129122
return false;
130-
} else if (!peer.isActive() && activePeers.size() >= maxActivePeers) {
123+
}
124+
125+
if (!peer.isActive() && activePeers.size() >= maxActivePeers) {
131126
disconnect(peer, TOO_MANY_PEERS);
132127
return false;
133-
} else if (activePeers.containsKey(peer.getNodeIdWrapper())) {
128+
}
129+
130+
if (activePeers.containsKey(peer.getNodeIdWrapper())) {
134131
Channel channel = activePeers.get(peer.getNodeIdWrapper());
135132
if (channel.getStartTime() > peer.getStartTime()) {
136133
logger.info("Disconnect connection established later, {}", channel.getNode());
137134
disconnect(channel, DUPLICATE_PEER);
138-
return true;
139135
} else {
140136
disconnect(peer, DUPLICATE_PEER);
141137
return false;
142138
}
143-
} else {
144-
return true;
145139
}
140+
logger.info("Add active peer {}, total active peers: {}", peer, activePeers.size());
141+
activePeers.put(peer.getNodeIdWrapper(), peer);
142+
return true;
146143
}
147144

148145
public Collection<Channel> getActivePeers() {

src/main/java/org/tron/common/overlay/server/HandshakeHandler.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import io.netty.channel.ChannelHandlerContext;
2222
import io.netty.handler.codec.ByteToMessageDecoder;
2323
import java.net.InetSocketAddress;
24-
import java.net.SocketAddress;
2524
import java.util.Arrays;
2625
import java.util.List;
2726
import org.slf4j.Logger;
@@ -31,14 +30,15 @@
3130
import org.springframework.context.annotation.Scope;
3231
import org.springframework.stereotype.Component;
3332
import org.tron.common.overlay.discover.NodeManager;
34-
import org.tron.common.overlay.message.*;
35-
import org.tron.common.utils.ByteArray;
33+
import org.tron.common.overlay.message.DisconnectMessage;
34+
import org.tron.common.overlay.message.HelloMessage;
35+
import org.tron.common.overlay.message.P2pMessage;
36+
import org.tron.common.overlay.message.P2pMessageFactory;
37+
import org.tron.common.overlay.message.ReasonCode;
3638
import org.tron.core.config.args.Args;
3739
import org.tron.core.db.Manager;
3840
import org.tron.core.net.peer.PeerConnection;
3941

40-
import static org.tron.common.overlay.message.StaticMessages.PONG_MESSAGE;
41-
4242
@Component
4343
@Scope("prototype")
4444
public class HandshakeHandler extends ByteToMessageDecoder {
@@ -51,13 +51,20 @@ public class HandshakeHandler extends ByteToMessageDecoder {
5151

5252
private final NodeManager nodeManager;
5353

54+
private final ChannelManager channelManager;
55+
5456
private Manager manager;
5557

5658
private P2pMessageFactory messageFactory = new P2pMessageFactory();
59+
60+
@Autowired
61+
private SyncPool syncPool;
5762

5863
@Autowired
59-
public HandshakeHandler(final NodeManager nodeManager, final Manager manager) {
64+
public HandshakeHandler(final NodeManager nodeManager, final ChannelManager channelManager,
65+
final Manager manager) {
6066
this.nodeManager = nodeManager;
67+
this.channelManager = channelManager;
6168
this.manager = manager;
6269
}
6370

@@ -140,14 +147,19 @@ private void handleHelloMsg(ChannelHandlerContext ctx, HelloMessage msg) {
140147
return;
141148
}
142149

143-
if (remoteId.length != 64) {
144-
sendHelloMsg(ctx, msg.getTimestamp());
145-
}
146-
147150
((PeerConnection)channel).setHelloMessage(msg);
148151

149152
channel.getNodeStatistics().p2pInHello.add();
150153

151154
channel.publicHandshakeFinished(ctx, msg);
155+
if (!channelManager.procPeer(channel)) {
156+
return;
157+
}
158+
159+
if (remoteId.length != 64) {
160+
sendHelloMsg(ctx, msg.getTimestamp());
161+
}
162+
163+
syncPool.onConnect(channel);
152164
}
153165
}

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

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,6 @@ public class AssetIssueActuator extends AbstractActuator {
4949
public boolean execute(TransactionResultCapsule ret) throws ContractExeException {
5050
long fee = calcFee();
5151
try {
52-
if (!this.contract.is(AssetIssueContract.class)) {
53-
throw new ContractExeException();
54-
}
55-
56-
if (dbManager == null) {
57-
throw new ContractExeException();
58-
}
5952
AssetIssueContract assetIssueContract = contract.unpack(AssetIssueContract.class);
6053
byte[] ownerAddress = assetIssueContract.getOwnerAddress().toByteArray();
6154
AssetIssueCapsule assetIssueCapsule = new AssetIssueCapsule(assetIssueContract);
@@ -112,11 +105,13 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException
112105

113106
@Override
114107
public boolean validate() throws ContractValidateException {
115-
if (!this.contract.is(AssetIssueContract.class)) {
116-
throw new ContractValidateException();
117-
}
118-
119108
try {
109+
if (!this.contract.is(AssetIssueContract.class)) {
110+
throw new ContractValidateException();
111+
}
112+
if (this.dbManager == null) {
113+
throw new ContractValidateException();
114+
}
120115
final AssetIssueContract assetIssueContract = this.contract.unpack(AssetIssueContract.class);
121116

122117
if (!Wallet.addressValid(assetIssueContract.getOwnerAddress().toByteArray())) {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ public class FreezeBalanceActuator extends AbstractActuator {
2222
super(contract, dbManager);
2323
}
2424

25-
2625
@Override
2726
public boolean execute(TransactionResultCapsule ret) throws ContractExeException {
2827
long fee = calcFee();
@@ -93,7 +92,9 @@ public boolean validate() throws ContractValidateException {
9392
"contract type error,expected type [FreezeBalanceContract],real type[" + contract
9493
.getClass() + "]");
9594
}
96-
95+
if (this.dbManager == null) {
96+
throw new ContractValidateException();
97+
}
9798
FreezeBalanceContract freezeBalanceContract = this.contract
9899
.unpack(FreezeBalanceContract.class);
99100
ByteString ownerAddress = freezeBalanceContract.getOwnerAddress();

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.tron.core.exception.ContractExeException;
3131
import org.tron.core.exception.ContractValidateException;
3232
import org.tron.protos.Contract;
33+
import org.tron.protos.Contract.ParticipateAssetIssueContract;
3334
import org.tron.protos.Protocol;
3435

3536

@@ -43,9 +44,8 @@ public class ParticipateAssetIssueActuator extends AbstractActuator {
4344
@Override
4445
public boolean execute(TransactionResultCapsule ret) throws ContractExeException {
4546
long fee = calcFee();
46-
4747
try {
48-
Contract.ParticipateAssetIssueContract participateAssetIssueContract =
48+
ParticipateAssetIssueContract participateAssetIssueContract =
4949
contract.unpack(Contract.ParticipateAssetIssueContract.class);
5050

5151
long cost = participateAssetIssueContract.getAmount();
@@ -78,8 +78,6 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException
7878
dbManager.getAccountStore().put(toAddressBytes, toAccount);
7979

8080
ret.setStatus(fee, Protocol.Transaction.Result.code.SUCESS);
81-
82-
return true;
8381
} catch (InvalidProtocolBufferException e) {
8482
ret.setStatus(fee, Protocol.Transaction.Result.code.FAILED);
8583
logger.debug(e.getMessage(), e);
@@ -89,15 +87,19 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException
8987
logger.debug(e.getMessage(), e);
9088
throw new ContractExeException(e.getMessage());
9189
}
90+
91+
return true;
9292
}
9393

9494
@Override
9595
public boolean validate() throws ContractValidateException {
96-
if (!this.contract.is(Contract.ParticipateAssetIssueContract.class)) {
97-
throw new ContractValidateException();
98-
}
99-
10096
try {
97+
if (!this.contract.is(ParticipateAssetIssueContract.class)) {
98+
throw new ContractValidateException();
99+
}
100+
if (this.dbManager == null) {
101+
throw new ContractValidateException();
102+
}
101103
final Contract.ParticipateAssetIssueContract participateAssetIssueContract =
102104
this.contract.unpack(Contract.ParticipateAssetIssueContract.class);
103105
//Parameters check

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException
6969
@Override
7070
public boolean validate() throws ContractValidateException {
7171
try {
72+
if (!this.contract.is(TransferContract.class)) {
73+
throw new ContractValidateException();
74+
}
75+
if (this.dbManager == null) {
76+
throw new ContractValidateException();
77+
}
7278
if (transferContract == null) {
7379
throw new ContractValidateException(
7480
"contract type error,expected type [TransferContract],real type[" + contract

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

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,6 @@ public class TransferAssetActuator extends AbstractActuator {
4141
@Override
4242
public boolean execute(TransactionResultCapsule ret) throws ContractExeException {
4343
long fee = calcFee();
44-
if (!this.contract.is(TransferAssetContract.class)) {
45-
throw new ContractExeException();
46-
}
47-
48-
if (this.dbManager == null) {
49-
throw new ContractExeException();
50-
}
51-
5244
try {
5345
TransferAssetContract transferAssetContract = this.contract
5446
.unpack(TransferAssetContract.class);
@@ -76,12 +68,19 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException
7668
ret.setStatus(fee, code.FAILED);
7769
throw new ContractExeException(e.getMessage());
7870
}
71+
7972
return true;
8073
}
8174

8275
@Override
8376
public boolean validate() throws ContractValidateException {
8477
try {
78+
if (!this.contract.is(TransferAssetContract.class)) {
79+
throw new ContractValidateException();
80+
}
81+
if (this.dbManager == null) {
82+
throw new ContractValidateException();
83+
}
8584
TransferAssetContract transferAssetContract = this.contract
8685
.unpack(TransferAssetContract.class);
8786

@@ -129,7 +128,6 @@ public boolean validate() throws ContractValidateException {
129128
throw new ContractValidateException("assetBalance is not sufficient.");
130129
}
131130

132-
// if account with to_address is not existed, create it.
133131
AccountCapsule toAccount = this.dbManager.getAccountStore().get(toAddress);
134132
if (toAccount == null) {
135133
throw new ContractValidateException("To account is not exit!");

0 commit comments

Comments
 (0)