Skip to content

Commit 735bccb

Browse files
committed
add updateLastActiveTime
1 parent 4791cdf commit 735bccb

3 files changed

Lines changed: 43 additions & 4 deletions

File tree

framework/src/main/java/org/tron/core/net/P2pEventHandlerImpl.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,9 @@ private void processMessage(PeerConnection peer, byte[] data) {
185185
break;
186186
case SYNC_BLOCK_CHAIN:
187187
syncBlockChainMsgHandler.processMessage(peer, msg);
188-
peer.setLastActiveTime(System.currentTimeMillis());
189188
break;
190189
case BLOCK_CHAIN_INVENTORY:
191190
chainInventoryMsgHandler.processMessage(peer, msg);
192-
peer.setLastActiveTime(System.currentTimeMillis());
193191
break;
194192
case INVENTORY:
195193
inventoryMsgHandler.processMessage(peer, msg);
@@ -199,7 +197,6 @@ private void processMessage(PeerConnection peer, byte[] data) {
199197
break;
200198
case BLOCK:
201199
blockMsgHandler.processMessage(peer, msg);
202-
peer.setLastActiveTime(System.currentTimeMillis());
203200
break;
204201
case TRXS:
205202
transactionsMsgHandler.processMessage(peer, msg);
@@ -210,6 +207,7 @@ private void processMessage(PeerConnection peer, byte[] data) {
210207
default:
211208
throw new P2pException(P2pException.TypeEnum.NO_SUCH_MESSAGE, msg.getType().toString());
212209
}
210+
updateLastActiveTime(peer, msg);
213211
} catch (Exception e) {
214212
processException(peer, msg, e);
215213
} finally {
@@ -225,6 +223,27 @@ private void processMessage(PeerConnection peer, byte[] data) {
225223
}
226224
}
227225

226+
private void updateLastActiveTime(PeerConnection peer, TronMessage msg) {
227+
MessageTypes type = msg.getType();
228+
229+
boolean flag = false;
230+
switch (type) {
231+
case SYNC_BLOCK_CHAIN:
232+
case BLOCK_CHAIN_INVENTORY:
233+
case BLOCK:
234+
flag = true;
235+
break;
236+
case FETCH_INV_DATA:
237+
flag = ((FetchInvDataMessage) msg).getInventoryType().equals(InventoryType.BLOCK);
238+
break;
239+
default:
240+
break;
241+
}
242+
if (flag) {
243+
peer.setLastActiveTime(System.currentTimeMillis());
244+
}
245+
}
246+
228247
private void processException(PeerConnection peer, TronMessage msg, Exception ex) {
229248
Protocol.ReasonCode code;
230249

framework/src/main/java/org/tron/core/net/messagehandler/FetchInvDataMsgHandler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ private void check(PeerConnection peer, FetchInvDataMessage fetchInvDataMsg) thr
171171
peer.getSyncBlockIdCache().put(hash, System.currentTimeMillis());
172172
}
173173
}
174-
peer.setLastActiveTime(System.currentTimeMillis());
175174
}
176175
}
177176

framework/src/test/java/org/tron/core/net/P2pEventHandlerImplTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@
1212
import org.tron.common.utils.Sha256Hash;
1313
import org.tron.core.Constant;
1414
import org.tron.core.config.args.Args;
15+
import org.tron.core.net.message.TronMessage;
16+
import org.tron.core.net.message.adv.FetchInvDataMessage;
1517
import org.tron.core.net.message.adv.InventoryMessage;
1618
import org.tron.core.net.peer.PeerConnection;
1719
import org.tron.core.net.service.statistics.PeerStatistics;
1820
import org.tron.protos.Protocol;
21+
import org.tron.protos.Protocol.Inventory.InventoryType;
1922

2023
public class P2pEventHandlerImplTest {
2124

@@ -108,4 +111,22 @@ public void testProcessInventoryMessage() throws Exception {
108111
Assert.assertEquals(300, count);
109112

110113
}
114+
115+
@Test
116+
public void testUpdateLastActiveTime() throws Exception {
117+
String[] a = new String[0];
118+
Args.setParam(a, Constant.TESTNET_CONF);
119+
120+
PeerConnection peer = new PeerConnection();
121+
P2pEventHandlerImpl p2pEventHandler = new P2pEventHandlerImpl();
122+
123+
Method method = p2pEventHandler.getClass()
124+
.getDeclaredMethod("updateLastActiveTime", PeerConnection.class, TronMessage.class);
125+
method.setAccessible(true);
126+
127+
long t1 = System.currentTimeMillis();
128+
FetchInvDataMessage message = new FetchInvDataMessage(new ArrayList<>(), InventoryType.BLOCK);
129+
method.invoke(p2pEventHandler, peer, message);
130+
Assert.assertTrue(peer.getLastActiveTime() >= t1);
131+
}
111132
}

0 commit comments

Comments
 (0)