KamoCRM

A 40001 while preparing completion notices no longer rolls the signature back

FixESigService
شحنت
8 نوفمبر 2026 في 12:45 ص UTC
المؤلف
Kamo
الالتزام
ae2e462

The first press of Finish failed with a 500 and the retry succeeded. Completion notices were composed INSIDE the signing transaction under a catch-all: their reads (sender, template, copy-link re-mint) hit YugabyteDB SQLState 40001 right after the signature rows were written, the repository marked the shared transaction rollback-only, the catch swallowed it, and the commit threw UnexpectedRollbackException - rolling back the whole signature. - EsignNoticeComposer (new bean): all notice DB work, REQUIRES_NEW + @RetryOnDbConflict, re-read by id, run from afterCommit. EsignNotificationService now only captures ids, schedules, and sends. Applies to completed, decoderd, voided and expired notices. - submit() and decoder() are @RetryOnDbConflict (shared-library advisor, outside the transaction), so any 40001 is retried in a new transaction. - The fail-soft flatten/certificate and usage-record catches now rethrow a transient conflict or a rollback-only state (DbConflicts.rethrowIfDoomed) instead of swallowing it into a poisoned commit. - SigningSurvivesDbConflictTest reproduces the swallowed-exception rollback on real transaction proxies and proves notices and submit survive a 40001.

جميع التغييرات

مثل ما ترى الشحن؟

كل هذا يأتي في مساحة عملك من تلقاء نفسه. ابدأ بالخطة المجانية وقرأ هذه الصفحة مرة أخرى في غضون شهر.

بدء الحرية إلى الأبدعرض التسعير