The witness_node keeps all of its internal data in memory. On a regular shutdown, it dumps that internal state to disk. When the node is started it tries to read that internal state from disk. If that works it can continue where it left off, but if it doesn't work it has to re-scan the whole blockchain, which takes some time.