diff --git a/adapters/postgres/capability_repository.go b/adapters/postgres/capability_repository.go index aa0b5c5..b1e8cb7 100644 --- a/adapters/postgres/capability_repository.go +++ b/adapters/postgres/capability_repository.go @@ -181,10 +181,6 @@ func (r *CapabilityRepository) SaveBinding(ctx context.Context, binding capabili if err != nil { return err } - _, err = tx.Exec(ctx, `INSERT INTO capability.cognitive_binding_revision_heads (binding_id,revision) VALUES ($1,$2) ON CONFLICT DO NOTHING`, binding.ID, binding.Revision) - if err != nil { - return err - } } return tx.Commit(ctx) } @@ -564,7 +560,11 @@ func (r *CapabilityRepository) SaveCognitiveDiscovery(ctx context.Context, value if err != nil { return err } - _, err = tx.Exec(ctx, `INSERT INTO capability.cognitive_binding_revision_heads (binding_id,revision) VALUES ($1,$2) ON CONFLICT DO NOTHING`, binding.ID, binding.Revision) + // Discovery creates immutable binding revisions. The durable head must + // follow the revision accepted by this transaction; leaving the + // existing head untouched strands refreshed providers behind an older + // inactive snapshot. + _, err = tx.Exec(ctx, `INSERT INTO capability.cognitive_binding_revision_heads (binding_id,revision) VALUES ($1,$2) ON CONFLICT (binding_id) DO UPDATE SET revision=EXCLUDED.revision,updated_at=CURRENT_TIMESTAMP`, binding.ID, binding.Revision) if err != nil { return err }