Skip to content

Commit

Permalink
Add shrink_disk_usage for sqlite3 base queues
Browse files Browse the repository at this point in the history
Performs a ``VACUUM`` against the sqlite, and rebuild the database file, this usually takes long time and frees a lot of disk space after `get()`

fixes #176
  • Loading branch information
peter-wangxu committed Apr 22, 2022
1 parent 464a820 commit 228fd90
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 5 deletions.
5 changes: 0 additions & 5 deletions persistqueue/sqlackqueue.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,11 +167,6 @@ def clear_acked_data(
)
return sql, AckStatus.acked

@sqlbase.with_conditional_transaction
def shrink_disk_usage(self):
sql = """VACUUM"""
return sql, ()

@property
def _sql_mark_ack_status(self):
return self._SQL_MARK_ACK_UPDATE.format(
Expand Down
5 changes: 5 additions & 0 deletions persistqueue/sqlbase.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,11 @@ def queue(self):
datarows.append(item)
return datarows

@with_conditional_transaction
def shrink_disk_usage(self):
sql = """VACUUM"""
return sql, ()

@property
def size(self):
return self.total
Expand Down
1 change: 1 addition & 0 deletions persistqueue/tests/test_sqlackqueue.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ def test_open_close_1000(self):
# assert adding another one still works
q.put('foobar')
data = q.get()
q.shrink_disk_usage()
self.assertEqual('foobar', data)

def test_random_read_write(self):
Expand Down
1 change: 1 addition & 0 deletions persistqueue/tests/test_sqlqueue.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ def test_open_close_1000(self):
# assert adding another one still works
q.put('foobar')
data = q.get()
q.shrink_disk_usage()
self.assertEqual('foobar', data)

def test_random_read_write(self):
Expand Down

0 comments on commit 228fd90

Please sign in to comment.