Restore the transaction the attachment overload left behind

FixEmailService
Shipped
September 3, 2026 at 1:03 AM UTC
Author
Kamo
Commit
6d31ee1

baf3c88 added an attachment parameter to sendToUser by moving the whole body into a new six-argument overload. The @Transactional stayed on the five-argument signature, which from then on only delegates — and POST /api/email/templates/send, the service-to-service endpoint behind every transactional email on the platform, calls the six-argument one. So **************** ran with no transaction and threw TransactionRequiredException. Every template send has answered 500 since 2026-09-01 22:21, to SecurityService, ESigService, MediaService, DaemonService and DocsService — after handing the message to SMTP, so the mail went out and the caller was told it had not. The worst of it was member creation: SecurityService sends the verification mail from inside the member-creation transaction, so the 500 marked that transaction rollback-only and "Add Member" died with a bare "Internal Server Error" in every organization, discarding a member that had been created in full. Reported for Harmony Home Loans; it was platform-wide. **************** resolves every field.method() call in the service to its repository through reflection and fails when a @Modifying query with no @Transactional of its own is reached from a method that is not @Transactional either. It tracks overloads by declaration rather than by name, which is the whole point here — the annotated twin would otherwise clear the broken one. Verified red on the bug and green on the fix.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing