Faire écrire la configuration de l'orge post-engagement, et guérir les orgs qu'il a manqués

FixSecurityService
Shipped
23 août 2026 à 02:45 UTC
Author
Kamo
Commit
748ae48

A La méthode transactionnelle appelée de l'auteur n'ouvre pas les transactions qui lui sont propres. Le printemps tire ces rappels du processusEntretien CleanupAfterCompletion déconcerte les ressources transactionnelles du fil, donc le juste est engagé la transaction est toujours active et la propagation REQUIDE par défaut y participe simplement - et a le participant n'est plus jamais engagé. Tout ce que la méthode écrit est écarté lorsque le EntityManager ferme, sans exception ni ligne log. 3903267 a déplacé le déverrouillage du siège de facturation et l'équipe d'utilisateur du système créer la transaction d'après-engagement d'Organisation, sous un commentaire disant qu'ils ont maintenant couru "dans leur les transactions propres". Ni l'un ni l'autre n'ont été changés en REQUIES-NEW, donc à partir de ce jour-là, les deux n'ont rien écrit : - Chaque org créé depuis n'a aucun compte-salibrage. Son propriétaire décide de MemberCapabilities.unlicend() - pas de courrier électronique, pas de réunions, pas d'appels, pas de pièces jointes - et ne peut pas récupérer en signant, parce que peut-êtreStartTrialOnogin démarre l'horloge lors d'un essai de PENDING qui n'a jamais été créé. La seule évasion était que le propriétaire s'est ouvert Paramètres, Plans et Billing, dont le critère de facturation bootstrap est documenté comme une solution de repli pour les exceptions qui ont été pré-dité. - Aucune association d'org n'a obtenu l'adhésion de l'utilisateur du système POST/enter-as have, donc entrer un en tant que membre du système répond "System User Member manque dans l'org cible; backfill pending". Cette moitié s'est cachée pour deux semaines parce que DataLoader re-exécute un backrchage complet de l'utilisateur du système sur chaque démarrage; seulement un orgement créé entre deux redémarrages l'ont jamais montré. ensureSystemUser, assurerTeamMemberForOrg et la configuration basée sur les idForSubOrgCreation sont maintenant REQUISIEUSE. La surcharge de l'Organisation reste requise - son appelant (AccountController) est un chemin de demande ordinaire qui devrait partager la transaction de l'appelant. - scanne chaque corps après engagement dans le service, résout chaque corps après engagement de service field.method(...) appel à la source de l'appelé, et échoue sur "Transactionnel without REQUIRES-NEW". «Async et CompletableFuture.runAsync sont exemptés: un nouveau fil d'investissement est utilisé pour obtenir une nouvelle transaction, C'est pourquoi les crochets de datation par courrier électronique et DNS n'ont jamais été affectés. BillingBackfillService guérit les orgs déjà laissés sans abonnement, au démarrage, la façon dont Le système de remblayage de l'utilisateur le fait. Il restaure exactement ce que la création aurait écrit - un essai de PENDING - donc l'horloge de 3 jours commence toujours sur la première connexion réelle du propriétaire et personne ne perd du temps d'évaluation Ils n'ont jamais pu s'en servir. Chaque org est guéri par son propre appel REQUIRES-NEW, donc un mauvais org ne coûte que lui-même au lieu de rejeter l'ensemble de la passe comme le ferait assurer les membres de l'équipeForAllOrgs.

All changes

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation