ailure.</p>
<center>
<img src="/img/blog/eo-post-graphic-3.png" width="600px" alt="A sample Flink application - precommit without external state"/>
</center>
<p>However, when a process has <em>external</em> state, this state must be handled a bit differently. External state usually comes in the form of writes to an external system such as Kafka. In that case, to provide exactly-once guarantees, the external system must provide support for transactions that integrates with a two-phase commit protocol.</p>
<p