I am interested if it is better to request a timeout in every saga instance to ensure that MarkAsComplete() is called rather than any given saga inadvertently not calling MarkAsComplete() (maybe due to a coding issue) and having these saga instances live forever. Assume many thousands of saga instances per day.
Since sagas, when they’re not processing messages, are effectively a record in a database, leaving a saga running “forever” is equivalent to not deleting a record from a database. This is similar to how regular business entities in a system are not deleted.
Can you tell me which is the better practice or maybe there a better one that I am not aware of.