From e7d0dd5ae40339a917d80caaa95aeb493224bb06 Mon Sep 17 00:00:00 2001 From: Alan <424492629@qq.com> Date: Thu, 22 Jun 2023 15:24:36 +0800 Subject: [PATCH 1/4] "fix log & SyncManager" --- .../java/io/xdag/core/BlockchainImpl.java | 28 +++---------------- 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/src/main/java/io/xdag/core/BlockchainImpl.java b/src/main/java/io/xdag/core/BlockchainImpl.java index f511d3ef..9cca1082 100644 --- a/src/main/java/io/xdag/core/BlockchainImpl.java +++ b/src/main/java/io/xdag/core/BlockchainImpl.java @@ -1558,12 +1558,7 @@ public long getStartAmount(long nmain) { // TODO : accept amount to block which in snapshot private void addAndAccept(Block block, UInt64 amount) { UInt64 oldAmount = block.getInfo().getAmount(); - try { - block.getInfo().setAmount(block.getInfo().getAmount().addExact(amount)); - } catch (Exception e) { -// log.error(e.getMessage(), e); - log.debug("balance {} amount {} block {}", oldAmount, amount, block.getHashLow().toHexString()); - } + block.getInfo().setAmount(block.getInfo().getAmount().addExact(amount)); UInt64 finalAmount = blockStore.getBlockInfoByHash(block.getHashLow()).getInfo().getAmount(); log.debug("Balance checker —— block:{} [old:{} add:{} fin:{}]", block.getHashLow().toHexString(), @@ -1580,12 +1575,7 @@ private void addAndAccept(Block block, UInt64 amount) { private void subtractAndAccept(Block block,UInt64 amount){ UInt64 oldAmount = block.getInfo().getAmount(); - try { - block.getInfo().setAmount(block.getInfo().getAmount().subtractExact(amount)); - } catch (Exception e) { -// log.error(e.getMessage(), e); - log.debug("balance {} amount {} block {}", oldAmount, amount, block.getHashLow().toHexString()); - } + block.getInfo().setAmount(block.getInfo().getAmount().subtractExact(amount)); UInt64 finalAmount = blockStore.getBlockInfoByHash(block.getHashLow()).getInfo().getAmount(); log.debug("Balance checker —— block:{} [old:{} sub:{} fin:{}]", block.getHashLow().toHexString(), @@ -1602,12 +1592,7 @@ private void subtractAndAccept(Block block,UInt64 amount){ private void subtractAmount(byte[] addressHash, UInt64 amount, Block block){ UInt64 balance = addressStore.getBalanceByAddress(addressHash); - try { - addressStore.updateBalance(addressHash,balance.subtractExact(amount)); - } catch (Exception e) { -// log.error(e.getMessage(), e); - log.debug("balance {} amount {} addressHsh {} block {}", balance, amount, toBase58(addressHash), block.getHashLow()); - } + addressStore.updateBalance(addressHash,balance.subtractExact(amount)); UInt64 finalAmount = addressStore.getBalanceByAddress(addressHash); log.debug("Balance checker —— Address:{} [old:{} sub:{} fin:{}]", WalletUtils.toBase58(addressHash), @@ -1620,12 +1605,7 @@ private void subtractAmount(byte[] addressHash, UInt64 amount, Block block){ } private void addAmount(byte[] addressHash, UInt64 amount, Block block){ UInt64 balance = addressStore.getBalanceByAddress(addressHash); - try { - addressStore.updateBalance(addressHash,balance.addExact(amount)); - } catch (Exception e) { -// log.error(e.getMessage(), e); - log.debug("balance {} amount {} addressHsh {} block {}", balance, amount, toBase58(addressHash), block.getHashLow()); - } + addressStore.updateBalance(addressHash,balance.addExact(amount)); UInt64 finalAmount = addressStore.getBalanceByAddress(addressHash); log.debug("Balance checker —— Address:{} [old:{} add:{} fin:{}]", WalletUtils.toBase58(addressHash), From c936d28ed75b241cfd6e948e3d697a30237ea70a Mon Sep 17 00:00:00 2001 From: Alan <424492629@qq.com> Date: Thu, 22 Jun 2023 17:13:07 +0800 Subject: [PATCH 2/4] "fix snapshot" --- src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java b/src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java index ecfda61f..d27429df 100644 --- a/src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java +++ b/src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java @@ -55,6 +55,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.math.BigInteger; +import java.util.Arrays; import java.util.List; import lombok.extern.slf4j.Slf4j; @@ -254,7 +255,7 @@ public void saveAddress(BlockStore blockStore,AddressStore addressStore, List Date: Thu, 22 Jun 2023 17:21:40 +0800 Subject: [PATCH 3/4] "fix snapshot" --- src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java b/src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java index d27429df..30bf0bae 100644 --- a/src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java +++ b/src/main/java/io/xdag/db/rocksdb/SnapshotStoreImpl.java @@ -255,7 +255,7 @@ public void saveAddress(BlockStore blockStore,AddressStore addressStore, List Date: Fri, 23 Jun 2023 19:00:54 +0800 Subject: [PATCH 4/4] "fix sycManager" --- .../java/io/xdag/core/BlockchainImpl.java | 50 ++++++++++++------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/xdag/core/BlockchainImpl.java b/src/main/java/io/xdag/core/BlockchainImpl.java index 9cca1082..08ca6de2 100644 --- a/src/main/java/io/xdag/core/BlockchainImpl.java +++ b/src/main/java/io/xdag/core/BlockchainImpl.java @@ -75,12 +75,7 @@ import io.xdag.utils.WalletUtils; import io.xdag.utils.XdagTime; import java.math.BigInteger; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -768,11 +763,7 @@ private UInt64 applyBlock(Block block) { if (link.getType() == XdagField.FieldType.XDAG_FIELD_IN) { subtractAndAccept(ref,link.getAmount()); UInt64 allBalance = addressStore.getAllBalance(); - try { - allBalance = allBalance.addExact(link.getAmount()); - }catch (Exception e){ - log.debug("apply allBalance error"); - } + allBalance = allBalance.add(link.getAmount()); addressStore.updateAllBalance(allBalance); } else { addAndAccept(ref,link.getAmount()); @@ -796,6 +787,7 @@ private UInt64 applyBlock(Block block) { // TODO: unapply block which in snapshot public UInt64 unApplyBlock(Block block) { List
links = block.getLinks(); + Collections.reverse(links); if ((block.getInfo().flags & BI_APPLIED) != 0) { UInt64 sum = UInt64.ZERO; for (Address link : links) { @@ -1495,7 +1487,9 @@ public void startCheckMain(long period) { } public void checkState() { - checkOrphan(); + if (kernel.getXdagState() == XdagState.SDST || XdagState.STST == kernel.getXdagState() || XdagState.SYNC == kernel.getXdagState()) { + checkOrphan(); + } checkMain(); } @@ -1558,7 +1552,12 @@ public long getStartAmount(long nmain) { // TODO : accept amount to block which in snapshot private void addAndAccept(Block block, UInt64 amount) { UInt64 oldAmount = block.getInfo().getAmount(); - block.getInfo().setAmount(block.getInfo().getAmount().addExact(amount)); + try { + block.getInfo().setAmount(block.getInfo().getAmount().addExact(amount)); + } catch (Exception e) { + log.error(e.getMessage(), e); + log.debug("balance {} amount {} block {}", oldAmount, amount, block.getHashLow().toHexString()); + } UInt64 finalAmount = blockStore.getBlockInfoByHash(block.getHashLow()).getInfo().getAmount(); log.debug("Balance checker —— block:{} [old:{} add:{} fin:{}]", block.getHashLow().toHexString(), @@ -1575,7 +1574,12 @@ private void addAndAccept(Block block, UInt64 amount) { private void subtractAndAccept(Block block,UInt64 amount){ UInt64 oldAmount = block.getInfo().getAmount(); - block.getInfo().setAmount(block.getInfo().getAmount().subtractExact(amount)); + try { + block.getInfo().setAmount(block.getInfo().getAmount().subtractExact(amount)); + } catch (Exception e) { + log.error(e.getMessage(), e); + log.debug("balance {} amount {} block {}", oldAmount, amount, block.getHashLow().toHexString()); + } UInt64 finalAmount = blockStore.getBlockInfoByHash(block.getHashLow()).getInfo().getAmount(); log.debug("Balance checker —— block:{} [old:{} sub:{} fin:{}]", block.getHashLow().toHexString(), @@ -1592,7 +1596,12 @@ private void subtractAndAccept(Block block,UInt64 amount){ private void subtractAmount(byte[] addressHash, UInt64 amount, Block block){ UInt64 balance = addressStore.getBalanceByAddress(addressHash); - addressStore.updateBalance(addressHash,balance.subtractExact(amount)); + try { + addressStore.updateBalance(addressHash,balance.subtractExact(amount)); + } catch (Exception e) { + log.error(e.getMessage(), e); + log.debug("balance {} amount {} addressHsh {} block {}", balance, amount, toBase58(addressHash), block.getHashLow()); + } UInt64 finalAmount = addressStore.getBalanceByAddress(addressHash); log.debug("Balance checker —— Address:{} [old:{} sub:{} fin:{}]", WalletUtils.toBase58(addressHash), @@ -1605,9 +1614,14 @@ private void subtractAmount(byte[] addressHash, UInt64 amount, Block block){ } private void addAmount(byte[] addressHash, UInt64 amount, Block block){ UInt64 balance = addressStore.getBalanceByAddress(addressHash); - addressStore.updateBalance(addressHash,balance.addExact(amount)); + try { + addressStore.updateBalance(addressHash,balance.addExact(amount)); + } catch (Exception e) { + log.error(e.getMessage(), e); + log.debug("balance {} amount {} addressHsh {} block {}", balance, amount, toBase58(addressHash), block.getHashLow()); + } UInt64 finalAmount = addressStore.getBalanceByAddress(addressHash); - log.debug("Balance checker —— Address:{} [old:{} add:{} fin:{}]", + log.warn("Balance checker —— Address:{} [old:{} add:{} fin:{}]", WalletUtils.toBase58(addressHash), BasicUtils.amount2xdag(balance), BasicUtils.amount2xdag(amount), @@ -1625,7 +1639,7 @@ private void acceptAmount(Block block, UInt64 amount) { blockStore.saveBlockInfo(block.getInfo()); } UInt64 finalAmount = blockStore.getBlockByHash(block.getHashLow(),false).getInfo().getAmount(); - log.debug("Balance checker —— Block:{} [old:{} acc:{} fin:{}]", + log.warn("Balance checker —— Block:{} [old:{} acc:{} fin:{}]", block.getHashLow().toHexString(), BasicUtils.amount2xdag(oldAmount), BasicUtils.amount2xdag(amount),