diff --git a/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt b/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt index 06f350df..6350c810 100644 --- a/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt +++ b/src/main/java/cash/z/ecc/android/sdk/block/CompactBlockProcessor.kt @@ -596,7 +596,8 @@ class CompactBlockProcessor( return if (height < lowerBoundHeight) { lowerBoundHeight } else { - rustBackend.getNearestRewindHeight(height) + // tricky: subtract one because we delete ABOVE this block + rustBackend.getNearestRewindHeight(height) - 1 } } diff --git a/src/main/java/cash/z/ecc/android/sdk/db/DerivedDataDb.kt b/src/main/java/cash/z/ecc/android/sdk/db/DerivedDataDb.kt index 94dbcb11..49e2f362 100644 --- a/src/main/java/cash/z/ecc/android/sdk/db/DerivedDataDb.kt +++ b/src/main/java/cash/z/ecc/android/sdk/db/DerivedDataDb.kt @@ -433,7 +433,7 @@ interface TransactionDao { twig("[cleanup] cleanupCancelledTx found ${it.size} matching transactions to cleanup") }.forEach { transactionId -> hasInitialMatch = true - removeInvalidTransaction(transactionId) + removeInvalidOutboundTransaction(transactionId) } hasFinalMatch = findMatchingTransactionId(rawTransactionId) != null success = hasInitialMatch && !hasFinalMatch @@ -445,7 +445,7 @@ interface TransactionDao { } @Transaction - suspend fun removeInvalidTransaction(transactionId: Long): Boolean { + suspend fun removeInvalidOutboundTransaction(transactionId: Long): Boolean { var success = false try { twig("[cleanup] removing invalid transactionId:$transactionId") @@ -474,7 +474,7 @@ interface TransactionDao { suspend fun deleteExpired(lastHeight: Int): Int { var count = 0 findExpiredTxs(lastHeight).forEach { transactionId -> - if (removeInvalidTransaction(transactionId)) count++ + if (removeInvalidOutboundTransaction(transactionId)) count++ } return count }