@@ -102,13 +102,17 @@ public Task RecordSagaSnapshot(SagaSnapshot sagaSnapshot, CancellationToken canc
102102 } ;
103103
104104 // Insert or update saga_snapshots table - add new change to the changes array
105+ var lockCmd = batch . CreateBatchCommand ( ) ;
106+ lockCmd . CommandText = "SELECT pg_advisory_xact_lock(hashtext(@saga_id))" ;
107+ lockCmd . Parameters . AddWithValue ( "saga_id" , sagaSnapshot . SagaId ) ;
108+ batch . BatchCommands . Add ( lockCmd ) ;
109+
105110 var cmd = batch . CreateBatchCommand ( ) ;
106111 cmd . CommandText = @"
107- SELECT pg_advisory_xact_lock(hashtext(@saga_id));
108112 INSERT INTO saga_snapshots (id, saga_id, saga_type, changes)
109113 VALUES (@saga_id, @saga_id, @saga_type, @new_change)
110114 ON CONFLICT (id) DO UPDATE SET
111- changes = COALESCE(saga_snapshots.changes, '[]'::jsonb) || @new_change::jsonb; " ;
115+ changes = COALESCE(saga_snapshots.changes, '[]'::jsonb) || @new_change::jsonb" ;
112116
113117 cmd . Parameters . AddWithValue ( "saga_id" , sagaSnapshot . SagaId ) ;
114118 cmd . Parameters . AddWithValue ( "saga_type" , sagaSnapshot . SagaType ) ;
@@ -122,16 +126,20 @@ ON CONFLICT (id) DO UPDATE SET
122126 public Task RecordKnownEndpoint ( KnownEndpoint knownEndpoint , CancellationToken cancellationToken )
123127 {
124128 // Insert KnownEndpoint into known_endpoints table
129+ var lockCmd = batch . CreateBatchCommand ( ) ;
130+ lockCmd . CommandText = "SELECT pg_advisory_xact_lock(hashtext(@id))" ;
131+ lockCmd . Parameters . AddWithValue ( "id" , knownEndpoint . Id ) ;
132+ batch . BatchCommands . Add ( lockCmd ) ;
133+
125134 var cmd = batch . CreateBatchCommand ( ) ;
126135 cmd . CommandText = @"
127- SELECT pg_advisory_xact_lock(hashtext(@id));
128136 INSERT INTO known_endpoints (
129137 id, name, host_id, host, last_seen
130138 ) VALUES (
131139 @id, @name, @host_id, @host, @last_seen
132140 )
133141 ON CONFLICT (id) DO UPDATE SET
134- last_seen = GREATEST(known_endpoints.last_seen, EXCLUDED.last_seen); " ;
142+ last_seen = GREATEST(known_endpoints.last_seen, EXCLUDED.last_seen)" ;
135143
136144 cmd . Parameters . AddWithValue ( "id" , knownEndpoint . Id ) ;
137145 cmd . Parameters . AddWithValue ( "name" , knownEndpoint . Name ) ;
0 commit comments