Skip to content

Commit

Permalink
Merge pull request ClickHouse#8384 from ClickHouse/avoid-std-terminat…
Browse files Browse the repository at this point in the history
…e-in-write-buffers

Avoid std::terminate in write buffers
  • Loading branch information
alexey-milovidov committed Dec 24, 2019
2 parents d029ee3 + 8d190e6 commit c949eb5
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 12 deletions.
9 changes: 8 additions & 1 deletion dbms/src/IO/BrotliWriteBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,14 @@ BrotliWriteBuffer::BrotliWriteBuffer(WriteBuffer & out_, int compression_level,

BrotliWriteBuffer::~BrotliWriteBuffer()
{
finish();
try
{
finish();
}
catch (...)
{
tryLogCurrentException(__PRETTY_FUNCTION__);
}
}

void BrotliWriteBuffer::nextImpl()
Expand Down
4 changes: 0 additions & 4 deletions dbms/src/IO/WriteBufferFromFileBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions dbms/src/IO/WriteBufferFromFileBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ class WriteBufferFromFileBase : public BufferWithOwnMemory<WriteBuffer>
{
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;

Expand Down
8 changes: 7 additions & 1 deletion dbms/src/IO/WriteBufferFromVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,14 @@ class WriteBufferFromVector : public WriteBuffer

~WriteBufferFromVector() override
{
if (!is_finished)
try
{
finish();
}
catch (...)
{
tryLogCurrentException(__PRETTY_FUNCTION__);
}
}
};

Expand Down
13 changes: 13 additions & 0 deletions dbms/src/IO/WriteBufferValidUTF8.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,4 +133,17 @@ void WriteBufferValidUTF8::finish()
putReplacement();
}


WriteBufferValidUTF8::~WriteBufferValidUTF8()
{
try
{
finish();
}
catch (...)
{
tryLogCurrentException(__PRETTY_FUNCTION__);
}
}

}
5 changes: 1 addition & 4 deletions dbms/src/IO/WriteBufferValidUTF8.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,7 @@ class WriteBufferValidUTF8 : public BufferWithOwnMemory<WriteBuffer>
const char * replacement_ = "\xEF\xBF\xBD",
size_t size = DEFAULT_SIZE);

virtual ~WriteBufferValidUTF8() override
{
finish();
}
~WriteBufferValidUTF8() override;
};

}

0 comments on commit c949eb5

Please sign in to comment.