Skip to content

Commit 249d732

Browse files
committed
Try this way
1 parent f247ce3 commit 249d732

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/ServiceControl.Audit.Persistence.PostgreSQL/UnitOfWork/PostgreSQLAuditIngestionUnitOfWork.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)