diff --git a/squeaknode/db/squeak_db.py b/squeaknode/db/squeak_db.py index a336445c..888889ef 100644 --- a/squeaknode/db/squeak_db.py +++ b/squeaknode/db/squeak_db.py @@ -992,6 +992,17 @@ class SqueakDb: sent_offer = self._parse_sent_offer(row) return sent_offer + def delete_expired_sent_offers(self): + """ Delete all expired sent offers. """ + s = self.sent_offers.delete().where( + datetime.utcnow().timestamp() + > self.sent_offers.c.invoice_timestamp + self.sent_offers.c.invoice_expiry + ) + with self.get_connection() as connection: + res = connection.execute(s) + deleted_sent_offers = res.rowcount + return deleted_sent_offers + # def mark_sent_offer_paid(self, preimage_hash, settle_index): # """ Mark a single received payment as paid. """ # stmt = ( diff --git a/squeaknode/node/squeak_controller.py b/squeaknode/node/squeak_controller.py index 59db8901..b3fa1f55 100644 --- a/squeaknode/node/squeak_controller.py +++ b/squeaknode/node/squeak_controller.py @@ -369,6 +369,12 @@ class SqueakController: if num_expired_offers > 0: logger.info("Deleted number of offers: {}".format(num_expired_offers)) + def delete_all_expired_sent_offers(self): + logger.debug("Deleting expired sent offers.") + num_expired_sent_offers = self.squeak_db.delete_expired_offers() + if num_expired_sent_offers > 0: + logger.info("Deleted number of sent offers: {}".format(num_expired_sent_offers)) + def verify_all_unverified_squeaks(self): self.squeak_block_verifier.verify_all_unverified_squeaks() diff --git a/squeaknode/node/squeak_offer_expiry_worker.py b/squeaknode/node/squeak_offer_expiry_worker.py index 8910547a..d099d2b7 100644 --- a/squeaknode/node/squeak_offer_expiry_worker.py +++ b/squeaknode/node/squeak_offer_expiry_worker.py @@ -22,3 +22,4 @@ class SqueakOfferExpiryWorker: def remove_expired_offers(self): self.squeak_controller.delete_all_expired_offers() + self.squeak_controller.delete_all_expired_sent_offers()