Skip to content

Commit 6b329c4

Browse files
committed
feat: use replace numhash with blockindex.
1 parent 7f0bca0 commit 6b329c4

3 files changed

Lines changed: 36 additions & 8 deletions

File tree

src/main/java/org/tron/core/Wallet.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,14 @@ public Block getNowBlock() {
246246
}
247247

248248
public Block getBlockByNum(long blockNum) {
249-
Sha256Hash headBlockId = dbManager.getBlockIdByNum(blockNum);
249+
Sha256Hash headBlockId = null;
250+
try {
251+
headBlockId = dbManager.getBlockIdByNum(blockNum);
252+
} catch (BadItemException e) {
253+
logger.info(e.getMessage());
254+
} catch (ItemNotFoundException e) {
255+
logger.info(e.getMessage());
256+
}
250257
try {
251258
return dbManager.getBlockById(headBlockId).getInstance();
252259
} catch (BadItemException e) {

src/main/java/org/tron/core/net/node/NodeDelegateImpl.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.util.LinkedList;
88
import java.util.List;
99
import java.util.stream.Collectors;
10-
import java.util.stream.LongStream;
1110
import lombok.extern.slf4j.Slf4j;
1211
import org.tron.common.overlay.message.Message;
1312
import org.tron.common.utils.Sha256Hash;
@@ -131,9 +130,19 @@ public LinkedList<BlockId> getLostBlockIds(List<BlockId> blockChainSummary)
131130
long unForkedBlockIdNum = unForkedBlockId.getNum();
132131
long len = Longs
133132
.min(dbManager.getHeadBlockNum(), unForkedBlockIdNum + NodeConstant.SYNC_FETCH_BATCH_NUM);
134-
return LongStream.rangeClosed(unForkedBlockIdNum, len)
135-
.mapToObj(num -> dbManager.getBlockIdByNum(num))
136-
.collect(Collectors.toCollection(LinkedList::new));
133+
134+
LinkedList<BlockId> blockIds = new LinkedList<>();
135+
for (long i = unForkedBlockIdNum; i <= len; i++) {
136+
try {
137+
BlockId id = dbManager.getBlockIdByNum(i);
138+
blockIds.add(id);
139+
} catch (BadItemException e) {
140+
return new LinkedList<>();
141+
} catch (ItemNotFoundException e) {
142+
return new LinkedList<>();
143+
}
144+
}
145+
return blockIds;
137146
}
138147

139148
@Override
@@ -168,7 +177,13 @@ public Deque<BlockId> getBlockChainSummary(BlockId beginBLockId, Deque<BlockId>
168177
long realHighBlkNum = highBlkNum + blockIds.size();
169178
do {
170179
if (lowBlkNum <= highNoForkBlkNum) {
171-
retSummary.offer(dbManager.getBlockIdByNum(lowBlkNum));
180+
try {
181+
retSummary.offer(dbManager.getBlockIdByNum(lowBlkNum));
182+
} catch (BadItemException e) {
183+
logger.info(e.getMessage());
184+
} catch (ItemNotFoundException e) {
185+
logger.info(e.getMessage());
186+
}
172187
} else if (lowBlkNum <= highBlkNum) {
173188
retSummary.offer(forkList.get((int) (lowBlkNum - highNoForkBlkNum - 1)));
174189
} else {

src/test/java/org/tron/core/db/ManagerTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,14 @@ public void pushBlock() {
135135
Assert.assertEquals("getBlockIdByNum is error", dbManager.getHeadBlockNum(),
136136
0);
137137
} else {
138-
Assert.assertEquals("getBlockIdByNum is error", blockCapsule2.getBlockId().toString(),
139-
dbManager.getBlockIdByNum(1).toString());
138+
try {
139+
Assert.assertEquals("getBlockIdByNum is error", blockCapsule2.getBlockId().toString(),
140+
dbManager.getBlockIdByNum(1).toString());
141+
} catch (BadItemException e) {
142+
e.printStackTrace();
143+
} catch (ItemNotFoundException e) {
144+
e.printStackTrace();
145+
}
140146
}
141147

142148
Assert.assertTrue("hasBlocks is error", dbManager.hasBlocks());

0 commit comments

Comments
 (0)