Skip to content

Commit fc85aed

Browse files
committed
Merge branch 'develop' of https://github.com/tronprotocol/java-tron into develop
# Conflicts: # src/main/java/org/tron/core/net/node/NodeDelegateImpl.java
2 parents 6b329c4 + 3e46f59 commit fc85aed

19 files changed

Lines changed: 376 additions & 165 deletions

src/main/java/org/tron/common/overlay/discover/NodeManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,9 @@ public List<NodeHandler> getNodes(Predicate<NodeHandler> predicate, int limit)
281281

282282
logger.debug("nodeHandlerMap size {} filter peer size {}", nodeHandlerMap.size(), filtered.size());
283283

284+
//TODO: here can use head num sort.
285+
filtered.sort((o1, o2) -> o2.getNodeStatistics().getReputation() - o1.getNodeStatistics().getReputation());
286+
284287
return CollectionUtils.truncate(filtered, limit);
285288
}
286289

src/main/java/org/tron/common/overlay/discover/UDPListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public UDPListener(final NodeManager nodeManager) {
6161
} else {
6262
new Thread(() -> {
6363
try {
64-
UDPListener.this.start();
64+
start();
6565
} catch (Exception e) {
6666
logger.debug(e.getMessage(), e);
6767
throw new RuntimeException(e);

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

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,15 @@ public Thread newThread(Runnable r) {
5858
}
5959
});
6060

61+
private static Thread sendMsgThread;
62+
6163
private Queue<MessageRoundtrip> requestQueue = new ConcurrentLinkedQueue<>();
62-
private Queue<MessageRoundtrip> respondQueue = new ConcurrentLinkedQueue<>();
64+
//private Queue<MessageRoundtrip> respondQueue = new ConcurrentLinkedQueue<>();
65+
66+
private BlockingQueue<Message> msgQueue = new LinkedBlockingQueue<>();
67+
6368
private ChannelHandlerContext ctx = null;
6469

65-
// @Autowired
66-
// EthereumListener ethereumListener;
6770
boolean hasPing = false;
6871
private ScheduledFuture<?> timerTask;
6972
private Channel channel;
@@ -73,13 +76,29 @@ public MessageQueue() {
7376

7477
public void activate(ChannelHandlerContext ctx) {
7578
this.ctx = ctx;
79+
7680
timerTask = timer.scheduleAtFixedRate(() -> {
7781
try {
7882
nudgeQueue();
7983
} catch (Throwable t) {
8084
logger.error("Unhandled exception", t);
8185
}
8286
}, 10, 10, TimeUnit.MILLISECONDS);
87+
88+
sendMsgThread = new Thread(()->{
89+
while (true) {
90+
try {
91+
Message msg = msgQueue.take();
92+
ctx.writeAndFlush(msg.getSendData())
93+
.addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
94+
}catch (InterruptedException e){
95+
break;
96+
}catch (Exception e) {
97+
logger.error("send message failed, {}, error info: {}", ctx.channel().remoteAddress(), e.getMessage());
98+
}
99+
}
100+
});
101+
sendMsgThread.start();
83102
}
84103

85104
public void setChannel(Channel channel) {
@@ -95,7 +114,7 @@ public void sendMessage(Message msg) {
95114
if (msg.getAnswerMessage() != null)
96115
requestQueue.add(new MessageRoundtrip(msg));
97116
else
98-
respondQueue.add(new MessageRoundtrip(msg));
117+
msgQueue.offer(msg);
99118
}
100119

101120
public void disconnect() {
@@ -138,7 +157,7 @@ private void nudgeQueue() {
138157
// remove last answered message on the queue
139158
removeAnsweredMessage(requestQueue.peek());
140159
// Now send the next message
141-
sendToWire(respondQueue.poll());
160+
//sendToWire(respondQueue.poll());
142161
sendToWire(requestQueue.peek());
143162
}
144163

@@ -173,8 +192,7 @@ private void sendToWire(MessageRoundtrip messageRoundtrip) {
173192
}
174193

175194
public void close() {
176-
if (!timerTask.isCancelled()) {
177-
timerTask.cancel(false);
178-
}
195+
sendMsgThread.interrupt();
196+
timerTask.cancel(false);
179197
}
180198
}

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ private synchronized void prepareActive() {
116116

117117
if (active.isEmpty()) return;
118118

119+
//sort by latency
119120
active.sort(Comparator.comparingDouble(c -> c.getPeerStats().getAvgLatency()));
120121

121122
for (PeerConnection channel : active) {
@@ -129,10 +130,6 @@ private synchronized void prepareActive() {
129130
}
130131

131132
synchronized void logActivePeers() {
132-
logger.info("-------- active node.");
133-
for (NodeHandler handler : nodeManager.dumpActiveNodes()) {
134-
logger.info(handler.getNode().toString());
135-
}
136133
logger.info("-------- active channel {}, node in user size {}", channelManager.getActivePeers().size(), channelManager.nodesInUse().size());
137134
for (Channel channel: channelManager.getActivePeers()){
138135
logger.info(channel.toString());

src/main/java/org/tron/common/utils/ExecutorLoop.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.util.concurrent.TimeUnit;
88
import java.util.concurrent.atomic.AtomicInteger;
99
import java.util.function.Consumer;
10-
import java.util.function.Function;
1110

1211
public class ExecutorLoop<In> {
1312

src/main/java/org/tron/core/config/Parameter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ interface ChainConstant {
1717

1818
interface NodeConstant {
1919

20-
long SYNC_FETCH_BATCH_NUM = 1000;
20+
long SYNC_RETURN_BATCH_NUM = 1000;
21+
long SYNC_FETCH_BATCH_NUM = 500;
22+
long MAX_BLOCKS_IN_PROCESS = 400;
23+
long MAX_BLOCKS_ALREADY_FETCHED = 800;
24+
long MAX_BLOCKS_SYNC_FROM_ONE_PEER = 200;
2125
long SYNC_CHAIN_LIMIT_NUM = 500;
2226

2327
}

src/main/java/org/tron/core/config/args/Args.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.beust.jcommander.Parameter;
77
import com.typesafe.config.Config;
88
import com.typesafe.config.ConfigObject;
9+
910
import java.io.BufferedReader;
1011
import java.io.File;
1112
import java.io.FileReader;
@@ -23,6 +24,7 @@
2324
import java.util.Optional;
2425
import java.util.Properties;
2526
import java.util.stream.Collectors;
27+
2628
import lombok.Getter;
2729
import lombok.NoArgsConstructor;
2830
import lombok.Setter;
@@ -154,11 +156,11 @@ public class Args {
154156
@Getter
155157
@Setter
156158
//If you are running a solidity node for java tron, this flag is set to true
157-
private boolean solidityNode;
159+
private boolean solidityNode = false;
158160

159161
@Getter
160162
@Setter
161-
//If you are running a solidity node for java tron, solidity node must assign a trust node for sync solidity block
163+
@Parameter(names = {"--trust-node"}, description = "Trust node addr")
162164
private String trustNodeAddr;
163165

164166
public static void clearParam() {
@@ -299,8 +301,9 @@ public static void setParam(final String[] args, final String configFilePath) {
299301
INSTANCE.nodeP2pVersion =
300302
config.hasPath("node.p2p.version") ? config.getInt("node.p2p.version") : 0;
301303

302-
INSTANCE.trustNodeAddr =
303-
config.hasPath("node.trust") ? config.getString("node.trust") : null;
304+
if (StringUtils.isEmpty(INSTANCE.trustNodeAddr)) {
305+
INSTANCE.trustNodeAddr = config.hasPath("node.trustNode") ? config.getString("node.trustNode") : null;
306+
}
304307
}
305308

306309

src/main/java/org/tron/core/db/AbstractRevokingStore.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,11 @@ private void addIfEmtpy() {
243243
}
244244
}
245245

246+
@Override
247+
public int size() {
248+
return stack.size();
249+
}
250+
246251
public void setMaxSize(int maxSize) {
247252
this.maxSize.set(maxSize);
248253
}

src/main/java/org/tron/core/db/Manager.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,14 @@ public void updateLatestSolidifiedBlock() {
817817
long latestSolidifiedBlockNum = numbers.get(solidifiedPosition);
818818

819819
getDynamicPropertiesStore().saveLatestSolidifiedBlockNum(latestSolidifiedBlockNum);
820+
((AbstractRevokingStore) revokingStore).setMaxSize((int) (
821+
dynamicPropertiesStore.getLatestBlockHeaderNumber()
822+
- dynamicPropertiesStore.getLatestSolidifiedBlockNum() + 1)
823+
);
824+
}
825+
826+
public long getSyncBeginNumber() {
827+
return dynamicPropertiesStore.getLatestBlockHeaderNumber() - revokingStore.size();
820828
}
821829

822830
/**
@@ -847,6 +855,14 @@ public void updateSignedWitness(BlockCapsule block) {
847855
witnessCapsule.setLatestBlockNum(block.getNum());
848856
witnessCapsule.setLatestSlotNum(witnessController.getAbSlotAtTime(block.getTimeStamp()));
849857

858+
//Update memory witness status
859+
WitnessCapsule wit = witnessController.getWitnesseByAddress(block.getWitnessAddress());
860+
if (wit != null) {
861+
wit.setTotalProduced(witnessCapsule.getTotalProduced() + 1);
862+
wit.setLatestBlockNum(block.getNum());
863+
wit.setLatestSlotNum(witnessController.getAbSlotAtTime(block.getTimeStamp()));
864+
}
865+
850866
this.getWitnessStore().put(witnessCapsule.getAddress().toByteArray(), witnessCapsule);
851867

852868
AccountCapsule sun = accountStore.getSun();
@@ -861,7 +877,7 @@ public void updateSignedWitness(BlockCapsule block) {
861877
logger.debug(e.getMessage(), e);
862878
}
863879

864-
logger.info("updateSignedWitness. witness address:{}, blockNum:{}, totalProduced:{}",
880+
logger.debug("updateSignedWitness. witness address:{}, blockNum:{}, totalProduced:{}",
865881
witnessCapsule.createReadableString(), block.getNum(), witnessCapsule.getTotalProduced());
866882

867883
}

src/main/java/org/tron/core/db/RevokingDatabase.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,7 @@ public interface RevokingDatabase {
2929

3030
void enable();
3131

32+
int size();
33+
3234
void disable();
3335
}

0 commit comments

Comments
 (0)