<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Transactions on Brian Faust</title><link>https://vacua.dev/tags/transactions/</link><description>Recent content in Transactions on Brian Faust</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://vacua.dev/tags/transactions/rss.xml" rel="self" type="application/rss+xml"/><item><title>Framework Convenience Has a Boundary</title><link>https://vacua.dev/thoughts/framework-convenience-has-a-boundary/</link><pubDate>Wed, 01 Jul 2020 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/framework-convenience-has-a-boundary/</guid><description>&lt;p&gt;A model was saved inside a database transaction. Its observer dispatched a
queue job. The worker started quickly, looked for the record which described
its work, and found nothing.&lt;/p&gt;
&lt;p&gt;The record existed in the transaction which dispatched the job. It was not yet
visible to the worker&amp;rsquo;s database connection.&lt;/p&gt;
&lt;p&gt;Retained history connects that race to successful wallet payments without a
corresponding wallet transaction. The job had been published. The state it
needed had not.&lt;/p&gt;</description></item><item><title>A Transaction Defines What Must Succeed Together</title><link>https://vacua.dev/thoughts/a-transaction-defines-what-must-succeed-together/</link><pubDate>Wed, 01 Feb 2017 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/a-transaction-defines-what-must-succeed-together/</guid><description>&lt;p&gt;A booking flow reserved funds, completed the remote booking, and captured the
funds. Only then did synchronous response processing fail.&lt;/p&gt;
&lt;p&gt;The remote booking existed. The funds were captured. The caller received a
failure.&lt;/p&gt;
&lt;p&gt;The capture was individually valid, and its own database transaction committed
cleanly. It was still too early. We had drawn the success boundary around
“remote booking returned” while the operation promised something larger: a
complete booking result which the caller could use.&lt;/p&gt;</description></item><item><title>Silencing an Error Does Not Protect the Customer</title><link>https://vacua.dev/thoughts/silencing-an-error-does-not-protect-the-customer/</link><pubDate>Wed, 01 Jun 2016 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/silencing-an-error-does-not-protect-the-customer/</guid><description>&lt;p&gt;A shipment-booking request returned without an error. The shipment appeared in
the system, so the request looked successful. It had no label and no tracking
number.&lt;/p&gt;
&lt;p&gt;Persistence had failed after the remote booking completed. A broad catch
swallowed the exception, emitted no report or log, and continued. The code met
one operational request—do not show customers errors—by returning an object
which the customer could not use.&lt;/p&gt;
&lt;p&gt;The intent was reasonable. Customers prefer reliable bookings to error
messages. But once the system can no longer produce the required result,
silence does not create reliability. It converts a known failure into an
ambiguous success and hands the investigation to the customer.&lt;/p&gt;</description></item></channel></rss>