The problem is that I cannot guard against a full disk because it could change any second. Even guarding every request could not prevent it certainly. And about the recoverability: It is totally fine for me if nothing ca be recovered as long the database won't be corrupt. If the disk is full I want to stop immediately and notify the user. This works fine, but only once! The second time the error is not thrown any more and this is what I don't understand. I think I will just re-open the connection if the error occurs. This way the disk is full error is thrown again. Thanks for your answer!