diff --git a/core/src/main/java/bisq/core/dao/burningman/accounting/storage/BurningManAccountingStore.java b/core/src/main/java/bisq/core/dao/burningman/accounting/storage/BurningManAccountingStore.java index cc80331f926..e5c69e9208f 100644 --- a/core/src/main/java/bisq/core/dao/burningman/accounting/storage/BurningManAccountingStore.java +++ b/core/src/main/java/bisq/core/dao/burningman/accounting/storage/BurningManAccountingStore.java @@ -17,7 +17,6 @@ package bisq.core.dao.burningman.accounting.storage; - import bisq.core.dao.burningman.accounting.blockchain.AccountingBlock; import bisq.core.dao.burningman.accounting.exceptions.BlockHashNotConnectingException; import bisq.core.dao.burningman.accounting.exceptions.BlockHeightNotConnectingException; @@ -75,7 +74,9 @@ public void purgeLastTenBlocks() { Lock writeLock = readWriteLock.writeLock(); writeLock.lock(); try { - purgeLast10Blocks(); + for (int i = 0; i < 10 && !blocks.isEmpty(); i++) { + blocks.removeLast(); + } } finally { writeLock.unlock(); } @@ -148,21 +149,18 @@ private void tryToAddNewBlock(AccountingBlock newBlock) throws BlockHeightNotCon } } - private void purgeLast10Blocks() { - if (blocks.size() <= 10) { - blocks.clear(); - return; - } - - List purged = new ArrayList<>(blocks.subList(0, blocks.size() - 10)); - blocks.clear(); - blocks.addAll(purged); - } - public Message toProtoMessage() { + List blocksCopy; + Lock readLock = readWriteLock.readLock(); + readLock.lock(); + try { + blocksCopy = new ArrayList<>(blocks); + } finally { + readLock.unlock(); + } return protobuf.PersistableEnvelope.newBuilder() .setBurningManAccountingStore(protobuf.BurningManAccountingStore.newBuilder() - .addAllBlocks(blocks.stream() + .addAllBlocks(blocksCopy.stream() .map(AccountingBlock::toProtoMessage) .collect(Collectors.toList()))) .build();