Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

duplicate key value violates unique constraint "room_retention_pkey" #11448

Open
cremesk opened this issue Nov 29, 2021 · 4 comments
Open

duplicate key value violates unique constraint "room_retention_pkey" #11448

cremesk opened this issue Nov 29, 2021 · 4 comments
Labels
A-Message-Retention-Policies Issues related to Synapse's support of MSC1763 (message retention policies) S-Minor Blocks non-critical functionality, workarounds exist. T-Defect Bugs, crashes, hangs, security vulnerabilities, or other reported issues.

Comments

@cremesk
Copy link
Contributor

cremesk commented Nov 29, 2021

with v1.48.0rc1 is see this error:

2021-11-27 09:58:24,896 - synapse.http.server - 97 - ERROR - POST-2657 - Failed handle request via 'ReplicationFederationSendEventsRestServlet': <SynapseRequest at 0x7f0fd11d8a00 method='POST' uri='/_synapse/replication/fed_send_events/FKwBeYUdmo' clientproto='HTTP/1.1' site='9094'>                          [26/88052]
Traceback (most recent call last):                                                                                                                                                                                                             
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/internet/defer.py", line 1657, in _inlineCallbacks                                                                                                                       
    result = current_context.run(                                                                                                                                                                                                              
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/python/failure.py", line 500, in throwExceptionIntoGenerator                                                                                                             
    return g.throw(self.type, self.value, self.tb)                                                                                                                                                                                             
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/replication/http/federation.py", line 134, in _handle_request                                                                                                            
    max_stream_id = await self.federation_event_handler.persist_events_and_notify(                                                                                                                                                             
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/handlers/federation_event.py", line 1861, in persist_events_and_notify                                                                                                   
    events, max_stream_token = await self._storage.persistence.persist_events(                                                                                                                                                                 
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/logging/opentracing.py", line 785, in _trace_inner                                                                                                                       
    return await func(*args, **kwargs)                                                                                                                                                                                                         
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/persist_events.py", line 326, in persist_events                                                                                                                  
    ret_vals = await yieldable_gather_results(enqueue, partitioned.items())                                                                                                                                                                    
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/persist_events.py", line 243, in handle_queue_loop                                                                                                               
    ret = await self._per_item_callback(                                                                                                                                                                                                       
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/persist_events.py", line 581, in _persist_event_batch                                                                                                            
    await self.persist_events_store._persist_events_and_state_updates(                                                                                                                                                                         
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/databases/main/events.py", line 175, in _persist_events_and_state_updates                                                                                                                                                                        
    await self.db_pool.runInteraction(                                                                                 
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/database.py", line 699, in runInteraction                                                                                                                        
    result = await self.runWithConnection(                                                                                                                                                                                                     
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/database.py", line 804, in runWithConnection                                                                                                                                                                                                     
    return await make_deferred_yieldable(                                                                                                                                                                                                      
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/python/threadpool.py", line 238, in inContext                                                                                                                            
    result = inContext.theWork()  # type: ignore[attr-defined]                                                                                                                                                                                 
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/python/threadpool.py", line 254, in <lambda>                                                                                                                             
    inContext.theWork = lambda: context.call(  # type: ignore[attr-defined]                                                                                                                                                                    
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/python/context.py", line 118, in callWithContext                                         
    return self.currentContext().callWithContext(ctx, func, *args, **kw)                                                                                                                                                                       
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/python/context.py", line 83, in callWithContext                                          
    return func(*args, **kw)                                                                                           
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/enterprise/adbapi.py", line 293, in _runWithConnection                                                                                                                                                                                                   
    compat.reraise(excValue, excTraceback)                                                                                                                                                                                                     
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/python/deprecate.py", line 298, in deprecatedFunction                                                                                                                                                                                                    
    return function(*args, **kwargs)                                                                                   
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/python/compat.py", line 404, in reraise                                                  
    raise exception.with_traceback(traceback)                                                                                                                                                                                                  
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/twisted/enterprise/adbapi.py", line 284, in _runWithConnection                                                                                                                                                                                                   
    result = func(conn, *args, **kw)                                                                                                                                                                                                           
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/database.py", line 799, in inner_func                                            
    return func(db_conn, *args, **kwargs)                                                                                                                                                                                                      
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/database.py", line 567, in new_transaction                                                                                                                                                                                                       
    r = func(cursor, *args, **kwargs)                                                                                                                                                                                                          
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/logging/utils.py", line 73, in wrapped                                                   
    return f(*args, **kwargs)                                                                                          
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/databases/main/events.py", line 397, in _persist_events_txn                                                                                                                                                                                      
    self._update_metadata_tables_txn(                                                                                  
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/databases/main/events.py", line 1488, in _update_metadata_tables_txn                                                                                                                                                                             
    self._store_retention_policy_for_room_txn(txn, event)                      
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/databases/main/events.py", line 1918, in _store_retention_policy_for_room_txn                                                                                                                                                                    
    self.db_pool.simple_insert_txn(                                            
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/database.py", line 892, in simple_insert_txn                                                                                                                                                                                                     
    txn.execute(sql, vals)                                                     
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/database.py", line 307, in execute                                               
    self._do_execute(self.txn.execute, sql, *args)                             
  File "/opt/venvs/matrix-synapse/lib/python3.9/site-packages/synapse/storage/database.py", line 340, in _do_execute                                           
    return func(sql, *args)                                                    
psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "room_retention_pkey"                                                          
DETAIL:  Key (room_id, event_id)=(!SOPFfiEojgdYhVcoaL:matrix.org, $e1bQrYY4-Hh36Vrc-r2kNqv86x3JNhNATb4j959MT3E) already exists.

Originally posted by @cremesk in #11433 (comment)

@babolivier babolivier added T-Defect Bugs, crashes, hangs, security vulnerabilities, or other reported issues. S-Minor Blocks non-critical functionality, workarounds exist. A-Message-Retention-Policies Issues related to Synapse's support of MSC1763 (message retention policies) labels Nov 29, 2021
@jae1911
Copy link
Contributor

jae1911 commented Apr 14, 2022

Same comportment observed with Synapse 1.56.0.

synapse_1           | Traceback (most recent call last):
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/http/server.py", line 268, in _async_render_wrapper
synapse_1           |     callback_return = await self._async_render(request)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/http/server.py", line 470, in _async_render
synapse_1           |     callback_return = await raw_callback_return
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/rest/client/room.py", line 337, in on_POST
synapse_1           |     await self.room_member_handler.update_membership(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/handlers/room_member.py", line 520, in update_membership
synapse_1           |     result = await self.update_membership_locked(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/handlers/room_member.py", line 856, in update_membership_locked
synapse_1           |     remote_join_response = await self._remote_join(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/handlers/room_member.py", line 1602, in _remote_join
synapse_1           |     event_id, stream_id = await self.federation_handler.do_invite_join(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/handlers/federation.py", line 471, in do_invite_join
synapse_1           |     max_stream_id = await self._federation_event_handler.process_remote_join(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/handlers/federation_event.py", line 453, in process_remote_join
synapse_1           |     await self._auth_and_persist_outliers(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/handlers/federation_event.py", line 1290, in _auth_and_persist_outliers
synapse_1           |     await self._auth_and_persist_outliers_inner(room_id, roots)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/handlers/federation_event.py", line 1356, in _auth_and_persist_outliers_inner
synapse_1           |     await self.persist_events_and_notify(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/handlers/federation_event.py", line 1890, in persist_events_and_notify
synapse_1           |     events, max_stream_token = await self._storage.persistence.persist_events(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/logging/opentracing.py", line 794, in _trace_inner
synapse_1           |     return await func(*args, **kwargs)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/persist_events.py", line 326, in persist_events
synapse_1           |     ret_vals = await yieldable_gather_results(enqueue, partitioned.items())
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/util/async_helpers.py", line 275, in yieldable_gather_results
synapse_1           |     raise dfe.subFailure.value from None
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/internet/defer.py", line 1656, in _inlineCallbacks
synapse_1           |     result = current_context.run(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/python/failure.py", line 489, in throwExceptionIntoGenerator
synapse_1           |     return g.throw(self.type, self.value, self.tb)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/persist_events.py", line 322, in enqueue
synapse_1           |     return await self._event_persist_queue.add_to_queue(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/persist_events.py", line 200, in add_to_queue
synapse_1           |     res = await make_deferred_yieldable(end_item.deferred.observe())
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/persist_events.py", line 243, in handle_queue_loop
synapse_1           |     ret = await self._per_item_callback(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/persist_events.py", line 580, in _persist_event_batch
synapse_1           |     await self.persist_events_store._persist_events_and_state_updates(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/databases/main/events.py", line 190, in _persist_events_and_state_updates
synapse_1           |     await self.db_pool.runInteraction(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/database.py", line 780, in runInteraction
synapse_1           |     return await delay_cancellation(defer.ensureDeferred(_runInteraction()))
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/internet/defer.py", line 1656, in _inlineCallbacks
synapse_1           |     result = current_context.run(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/python/failure.py", line 489, in throwExceptionIntoGenerator
synapse_1           |     return g.throw(self.type, self.value, self.tb)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/database.py", line 752, in _runInteraction
synapse_1           |     result = await self.runWithConnection(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/database.py", line 875, in runWithConnection
synapse_1           |     return await make_deferred_yieldable(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/python/threadpool.py", line 244, in inContext
synapse_1           |     result = inContext.theWork()  # type: ignore[attr-defined]
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/python/threadpool.py", line 260, in <lambda>
synapse_1           |     inContext.theWork = lambda: context.call(  # type: ignore[attr-defined]
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/python/context.py", line 117, in callWithContext
synapse_1           |     return self.currentContext().callWithContext(ctx, func, *args, **kw)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/python/context.py", line 82, in callWithContext
synapse_1           |     return func(*args, **kw)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/twisted/enterprise/adbapi.py", line 282, in _runWithConnection
synapse_1           |     result = func(conn, *args, **kw)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/database.py", line 868, in inner_func
synapse_1           |     return func(db_conn, *args, **kwargs)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/database.py", line 616, in new_transaction
synapse_1           |     r = func(cursor, *args, **kwargs)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/databases/main/events.py", line 413, in _persist_events_txn
synapse_1           |     self._update_metadata_tables_txn(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/databases/main/events.py", line 1544, in _update_metadata_tables_txn
synapse_1           |     self._store_retention_policy_for_room_txn(txn, event)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/databases/main/events.py", line 2034, in _store_retention_policy_for_room_txn
synapse_1           |     self.db_pool.simple_insert_txn(
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/database.py", line 963, in simple_insert_txn
synapse_1           |     txn.execute(sql, vals)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/database.py", line 317, in execute
synapse_1           |     self._do_execute(self.txn.execute, sql, *args)
synapse_1           |   File "/usr/local/lib/python3.9/site-packages/synapse/storage/database.py", line 350, in _do_execute
synapse_1           |     return func(sql, *args)
synapse_1           | psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "room_retention_pkey"
synapse_1           | DETAIL:  Key (room_id, event_id)=(!xFKkXCpcnEwgBEQBFt:matrix.org, $KPwZn87QJVhHvp-UXOFfUJ2H59tCdD9xuPqwvQPB1B4) already exists.

@Mikaela

This comment was marked as outdated.

@Mikaela

This comment was marked as resolved.

@Mikaela

This comment was marked as resolved.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A-Message-Retention-Policies Issues related to Synapse's support of MSC1763 (message retention policies) S-Minor Blocks non-critical functionality, workarounds exist. T-Defect Bugs, crashes, hangs, security vulnerabilities, or other reported issues.
Projects
None yet
Development

No branches or pull requests

4 participants