Use getrandbits instead of passwordy strings for savepoint ids.

Better perf, why not.
This commit is contained in:
voussoir 2022-03-10 11:26:51 -08:00
parent d17a79c128
commit ed952ffdda
No known key found for this signature in database
GPG key ID: 5F7554F8C26DACCB

View file

@ -3,15 +3,17 @@ Worms is an SQL ORM with the strength and resilience of the humble earthworm.
''' '''
import abc import abc
import functools import functools
import random
import re import re
import typing import typing
from voussoirkit import passwordy
from voussoirkit import sqlhelpers from voussoirkit import sqlhelpers
from voussoirkit import vlogging from voussoirkit import vlogging
log = vlogging.getLogger(__name__, 'worms') log = vlogging.getLogger(__name__, 'worms')
RNG = random.SystemRandom()
class WormException(Exception): class WormException(Exception):
pass pass
@ -112,7 +114,7 @@ class Database(metaclass=abc.ABCMeta):
while len(self.on_commit_queue) > 0: while len(self.on_commit_queue) > 0:
task = self.on_commit_queue.pop(-1) task = self.on_commit_queue.pop(-1)
if isinstance(task, str): if isinstance(task, int):
# savepoints. # savepoints.
continue continue
args = task.get('args', []) args = task.get('args', [])
@ -309,7 +311,7 @@ class Database(metaclass=abc.ABCMeta):
task = self.on_rollback_queue.pop(-1) task = self.on_rollback_queue.pop(-1)
if task == savepoint: if task == savepoint:
break break
if isinstance(task, str): if isinstance(task, int):
# Intermediate savepoints. # Intermediate savepoints.
continue continue
args = task.get('args', []) args = task.get('args', [])
@ -329,7 +331,7 @@ class Database(metaclass=abc.ABCMeta):
self.on_commit_queue.clear() self.on_commit_queue.clear()
def savepoint(self, message=None) -> str: def savepoint(self, message=None) -> str:
savepoint_id = passwordy.random_hex(length=16) savepoint_id = RNG.getrandbits(32)
if message: if message:
log.log(5, 'Savepoint %s for %s.', savepoint_id, message) log.log(5, 'Savepoint %s for %s.', savepoint_id, message)
else: else: