diff --git a/dbms/src/IO/BrotliWriteBuffer.cpp b/dbms/src/IO/BrotliWriteBuffer.cpp index 9e8b2a81a63d..0a0eeb52956d 100644 --- a/dbms/src/IO/BrotliWriteBuffer.cpp +++ b/dbms/src/IO/BrotliWriteBuffer.cpp @@ -46,7 +46,14 @@ BrotliWriteBuffer::BrotliWriteBuffer(WriteBuffer & out_, int compression_level, BrotliWriteBuffer::~BrotliWriteBuffer() { - finish(); + try + { + finish(); + } + catch (...) + { + tryLogCurrentException(__PRETTY_FUNCTION__); + } } void BrotliWriteBuffer::nextImpl() diff --git a/dbms/src/IO/WriteBufferFromFileBase.cpp b/dbms/src/IO/WriteBufferFromFileBase.cpp index 7a3bf1e7378c..4b989d7ac725 100644 --- a/dbms/src/IO/WriteBufferFromFileBase.cpp +++ b/dbms/src/IO/WriteBufferFromFileBase.cpp @@ -8,10 +8,6 @@ WriteBufferFromFileBase::WriteBufferFromFileBase(size_t buf_size, char * existin { } -WriteBufferFromFileBase::~WriteBufferFromFileBase() -{ -} - off_t WriteBufferFromFileBase::seek(off_t off, int whence) { return doSeek(off, whence); diff --git a/dbms/src/IO/WriteBufferFromFileBase.h b/dbms/src/IO/WriteBufferFromFileBase.h index 18bc6b36085b..e846045016ca 100644 --- a/dbms/src/IO/WriteBufferFromFileBase.h +++ b/dbms/src/IO/WriteBufferFromFileBase.h @@ -13,12 +13,12 @@ class WriteBufferFromFileBase : public BufferWithOwnMemory { public: WriteBufferFromFileBase(size_t buf_size, char * existing_memory, size_t alignment); - virtual ~WriteBufferFromFileBase(); + ~WriteBufferFromFileBase() override = default; off_t seek(off_t off, int whence = SEEK_SET); void truncate(off_t length = 0); virtual off_t getPositionInFile() = 0; - virtual void sync() = 0; + void sync() override = 0; virtual std::string getFileName() const = 0; virtual int getFD() const = 0; diff --git a/dbms/src/IO/WriteBufferFromVector.h b/dbms/src/IO/WriteBufferFromVector.h index b6a6a226669d..02f07b9f228c 100644 --- a/dbms/src/IO/WriteBufferFromVector.h +++ b/dbms/src/IO/WriteBufferFromVector.h @@ -89,8 +89,14 @@ class WriteBufferFromVector : public WriteBuffer ~WriteBufferFromVector() override { - if (!is_finished) + try + { finish(); + } + catch (...) + { + tryLogCurrentException(__PRETTY_FUNCTION__); + } } }; diff --git a/dbms/src/IO/WriteBufferValidUTF8.cpp b/dbms/src/IO/WriteBufferValidUTF8.cpp index 220b6cd44fc5..b40424fc4633 100644 --- a/dbms/src/IO/WriteBufferValidUTF8.cpp +++ b/dbms/src/IO/WriteBufferValidUTF8.cpp @@ -133,4 +133,17 @@ void WriteBufferValidUTF8::finish() putReplacement(); } + +WriteBufferValidUTF8::~WriteBufferValidUTF8() +{ + try + { + finish(); + } + catch (...) + { + tryLogCurrentException(__PRETTY_FUNCTION__); + } +} + } diff --git a/dbms/src/IO/WriteBufferValidUTF8.h b/dbms/src/IO/WriteBufferValidUTF8.h index 31151eefbfb4..1d934be3779a 100644 --- a/dbms/src/IO/WriteBufferValidUTF8.h +++ b/dbms/src/IO/WriteBufferValidUTF8.h @@ -35,10 +35,7 @@ class WriteBufferValidUTF8 : public BufferWithOwnMemory const char * replacement_ = "\xEF\xBF\xBD", size_t size = DEFAULT_SIZE); - virtual ~WriteBufferValidUTF8() override - { - finish(); - } + ~WriteBufferValidUTF8() override; }; }