This document discusses exactly once and effectively once semantics in Heron stream processing. It explains that exactly once is not truly possible and effectively once uses an optimistic approach with distributed snapshots and markers to provide exactly once semantics. The document compares optimistic and pessimistic approaches, and describes how Heron implements the optimistic approach using state managers and a checkpoint manager with pluggable state stores. It also discusses challenges with bolt state, sink state, and ensuring idempotent or transactional writes.