mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-20 16:40:35 +00:00
It is now necessary to close() a file before destroying it, otherwise a big ugly warning message is printed by the reactor. Our sstable read path was especially careless about closing the countless files it opens, and the sstable test generated as many as 400 (!) of these warning messages, despite running correctly. This patch adds the missing close() calls. After this patch, the sstable test still shows 3 warning messages. Those are unavoidable: They happen while broken sstables are being tested, and an exception is thrown in the middle of the sstable processing, causing us to destroy a file object without calling close() on it first. This, in my opinion, proves that requiring close() in the read path is not a good thing, it is un-RAII-like and not exception-safe. But it is benign except the warning message, so whatever. 3 scary warning messages from the test are better than 400... If these 3 remaining messages really bother us, I guess we can fix it by catching the exceptions in the sstable code, closing the file and rethrowing the exception, but it will be quite ugly... Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>