def clear_excess(self, utxo_flush_count): # < might happen at end of compaction as both DBs cannot be # updated atomically if self.flush_count <= utxo_flush_count: return self.logger.info('DB shut down uncleanly. Scanning for ' 'excess history flushes...') keys = [] for key, _hist in self.db.iterator(prefix=b''): flush_id, = unpack_be_uint16_from(key[-2:]) if flush_id > utxo_flush_count: keys.append(key) self.logger.info(f'deleting {len(keys):,d} history entries') self.flush_count = utxo_flush_count with self.db.write_batch() as batch: for key in keys: batch.delete(key) self.write_state(batch) self.logger.info('deleted excess history entries')
def _read_be_uint16(self): result, = unpack_be_uint16_from(self.binary, self.cursor) self.cursor += 2 return result