Represents the reprocessing state machine, which is executed on reprocessing.
+------------------+ +-------------+ +------------------------+
| | | | | |
| startRecover() |---> scanLog() |---------->| reprocessNextEvent() |
| | | | | |
+------------------+ +---+---------+ +-----^------+-----------+
| | |
+-----------------+ | no source events | |
| | | | |
| onRecovered() <--------+ | | +--------------------+
| | | | | |
+--------^--------+ hasNext | +--->| reprocessEvent() |
| +--------------------------------+ | |
| | +----+----------+----+
| | | |
+------+------------+-----+ | |
| | no event processor | |
| onRecordReprocessed() |<------------------------------------------+ |
| | |
+---------^---------------+ |
| |
| +--------------------------+ +----------------------+ |
| | | | | |
+------+ updateStateUntilDone() <-------+ processUntilDone() |<----+
| | | |
+------^------------+------+ +---^------------+-----+
| | | |
+------------+ +------------+
exception exception
See https://textik.com/#773271ce7ea2096a