core (memory/sqla_mapping): add a version_id column to detect race conditions.
This commit is contained in:
parent
b8854ad46c
commit
5bb47c69e4
2 changed files with 31 additions and 0 deletions
|
|
@ -0,0 +1,26 @@
|
|||
"""add "version_id" to History
|
||||
|
||||
Revision ID: 610345f77e75
|
||||
Revises: 2ab01aa1f686
|
||||
Create Date: 2023-11-20 17:33:53.544032
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '610345f77e75'
|
||||
down_revision = '2ab01aa1f686'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
with op.batch_alter_table('history', schema=None) as batch_op:
|
||||
batch_op.add_column(sa.Column('version_id', sa.Integer(), server_default=sa.text('1'), nullable=False))
|
||||
|
||||
|
||||
def downgrade():
|
||||
with op.batch_alter_table('history', schema=None) as batch_op:
|
||||
batch_op.drop_column('version_id')
|
||||
|
|
@ -35,6 +35,7 @@ from sqlalchemy import (
|
|||
Integer,
|
||||
JSON,
|
||||
MetaData,
|
||||
text,
|
||||
Text,
|
||||
UniqueConstraint,
|
||||
event,
|
||||
|
|
@ -267,6 +268,9 @@ class History(Base):
|
|||
)
|
||||
|
||||
uid = Column(Text, primary_key=True)
|
||||
# FIXME: version_id is only needed for changes in `extra` column. It would maybe be
|
||||
# better to use separate table for `extra` data instead.
|
||||
version_id = Column(Integer, nullable=False, server_default=text("1"))
|
||||
origin_id = Column(Text)
|
||||
stanza_id = Column(Text)
|
||||
update_uid = Column(Text)
|
||||
|
|
@ -300,6 +304,7 @@ class History(Base):
|
|||
thread = relationship(
|
||||
"Thread", uselist=False, back_populates="history", passive_deletes=True
|
||||
)
|
||||
__mapper_args__ = {"version_id_col": version_id}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
source_jid = kwargs.pop("source_jid", None)
|
||||
|
|
|
|||
Loading…
Reference in a new issue