Renn F
78272de4fc
[F042] isolate concurrent-duplicate conventions cache put in a savepoint
...
Two task creates for the same project/HEAD can race to populate the
conventions cache; the loser's INSERT fails the partial-unique index with
IntegrityError. A bare session.add + flush poisons the shared session (the
task-create transaction rides the same session), so every subsequent op
raises 'this session is in error state' and task creation crashes.
Run the INSERT in a savepoint (begin_nested) and swallow the IntegrityError:
only the savepoint rolls back, the outer transaction stays usable, and the
winner's row satisfies the next _cache_get.
2026-06-28 11:21:53 +02:00
..
2026-06-28 10:38:28 +02:00
2026-05-02 03:11:49 +02:00
2026-05-02 03:11:49 +02:00
2026-06-03 06:35:03 +02:00
2026-05-08 12:18:00 +02:00
2026-06-03 06:35:03 +02:00
2026-06-14 13:43:46 +02:00
2026-06-27 00:54:43 +02:00
2026-06-15 01:23:03 +02:00
2026-06-18 03:33:47 +02:00
2026-06-15 20:47:41 +02:00
2026-06-21 20:31:42 +02:00
2026-06-28 11:21:53 +02:00
2026-06-23 00:29:07 +02:00
2026-05-16 06:20:35 +02:00
2026-06-24 15:43:30 +02:00
2026-06-21 02:48:07 +02:00
2026-06-14 13:43:46 +02:00
2026-06-17 16:50:11 +02:00
2026-06-25 18:35:52 +02:00
2026-06-16 18:01:40 +02:00
2026-06-14 13:43:46 +02:00
2026-06-20 19:10:21 +02:00
2026-06-28 04:46:09 +02:00
2026-06-28 10:50:15 +02:00
2026-06-25 18:35:52 +02:00
2026-06-15 07:03:59 +02:00
2026-06-19 09:15:01 +02:00
2026-06-15 07:03:59 +02:00
2026-06-14 13:43:46 +02:00
2026-06-16 18:01:40 +02:00
2026-06-17 06:36:28 +02:00
2026-06-25 18:35:52 +02:00
2026-06-14 23:18:58 +02:00
2026-06-27 07:19:35 +02:00
2026-06-15 20:47:41 +02:00
2026-05-06 21:02:31 +02:00
2026-05-14 04:21:07 +02:00
2026-06-25 01:07:05 +02:00
2026-05-06 21:02:31 +02:00
2026-06-27 20:48:28 +02:00
2026-06-26 01:43:08 +02:00
2026-06-23 07:26:41 +02:00
2026-06-26 01:43:08 +02:00
2026-06-28 10:30:42 +02:00
2026-05-03 10:38:59 +02:00
2026-06-14 13:43:46 +02:00
2026-06-15 06:12:00 +02:00
2026-06-15 08:13:53 +02:00
2026-06-26 01:43:08 +02:00
2026-06-28 10:38:28 +02:00
2026-06-25 07:29:27 +02:00
2026-06-27 07:19:35 +02:00
2026-06-21 02:56:53 +02:00
2026-06-19 09:15:01 +02:00
2026-06-27 19:52:01 +02:00
2026-06-14 13:43:46 +02:00
2026-06-28 02:02:33 +02:00
2026-06-22 03:49:45 +02:00
2026-06-14 13:43:46 +02:00
2026-06-28 10:39:24 +02:00
2026-06-26 01:43:08 +02:00
2026-06-26 01:43:08 +02:00
2026-06-28 10:43:31 +02:00
2026-06-26 01:43:08 +02:00
2026-06-26 01:43:08 +02:00
2026-06-21 02:48:07 +02:00
2026-06-15 20:47:41 +02:00
2026-06-15 20:47:41 +02:00
2026-06-15 20:47:41 +02:00
2026-06-17 20:52:47 +02:00
2026-06-22 23:37:07 +02:00
2026-06-28 04:22:27 +02:00
2026-05-06 21:02:31 +02:00
2026-06-12 23:11:01 +02:00
2026-06-15 20:47:41 +02:00
2026-06-21 02:48:07 +02:00
2026-06-26 22:47:57 +02:00
2026-06-23 07:26:41 +02:00
2026-06-03 06:35:03 +02:00
2026-06-26 23:28:43 +02:00
2026-06-17 20:50:07 +02:00
2026-06-22 13:02:59 +02:00
2026-06-12 23:10:21 +02:00
2026-06-11 23:19:50 +02:00
2026-05-02 03:11:49 +02:00
2026-06-22 12:37:46 +02:00
2026-06-11 18:16:20 +02:00
2026-06-04 00:38:42 +02:00
2026-05-12 22:40:15 +02:00
2026-05-12 22:40:15 +02:00
2026-06-08 05:17:15 +02:00
2026-06-22 22:59:18 +02:00
2026-06-05 16:35:22 +02:00
2026-06-22 01:59:41 +02:00