# Read Holds - Durable Subscribes epic: [17541](https://github.com/MaterializeInc/database-issues/issues/5094) - Configurable compaction windows: [16701](https://github.com/MaterializeInc/database-issues/issues/4840) ## The Problem Users are not able to use `SUBSCRIBE` without data loss. When materialize restarts or a client connection fails for some reason, users are not able to restart the `SUBSCRIBE` `AS OF` their most recently observed timestamp because the read frontier has usually progressed past that time. This happens because the compaction window is 1 second for all user objects. ## Success Criteria `SUBSCRIBE` must be usable without data loss across server restarts or client reconnections. ## Solution Proposal Add a new `HOLD` object that acquires controller read holds on listed objects at a specific timestamp. The `HOLD` must be manually advanced to newer timestamps by users which will release the previous and acquire a new read hold to the specified timestamp. If the timestamp falls behind a configurable window, the `HOLD` is marked in an error state and the read holds are released. The `HOLD` can be created by: ``` CREATE HOLD ON [, ...] [AT