Skip to content

Commit e2556c2

Browse files
committed
fix PR
Signed-off-by: adi_holden <[email protected]>
1 parent 6c7a823 commit e2556c2

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/server/io_utils.cc

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ using namespace std;
1212
namespace dfly {
1313

1414
io::Result<size_t> BufferedStreamerBase::WriteSome(const iovec* vec, uint32_t len) {
15+
// Shrink producer_buf_ only if it is empty, its capacity reached 10 times more than max buffer
16+
// memory and the write len is less than max buffer memory.
17+
if (producer_buf_.InputLen() == 0 && producer_buf_.Capacity() > max_buffered_mem_ * 10) {
18+
uint32_t write_len = 0;
19+
for (uint32_t i = 0; i < len; ++i) {
20+
write_len += vec->iov_len;
21+
}
22+
if (write_len < max_buffered_mem_) {
23+
consumer_buf_ = base::IoBuf{max_buffered_mem_};
24+
}
25+
}
26+
1527
return io::BufSink{&producer_buf_}.WriteSome(vec, len);
1628
}
1729

@@ -58,9 +70,6 @@ error_code BufferedStreamerBase::ConsumeIntoSink(io::Sink* dest) {
5870
}
5971

6072
consumer_buf_.Clear();
61-
if (consumer_buf_.Capacity() > max_buffered_mem_ * 10) {
62-
consumer_buf_ = base::IoBuf{};
63-
}
6473
}
6574
return std::error_code{};
6675
}

src/server/io_utils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class BufferedStreamerBase : public io::Sink {
2020
protected:
2121
// Initialize with global cancellation and optional stall conditions.
2222
BufferedStreamerBase(const Cancellation* cll, unsigned max_buffered_cnt = 5,
23-
unsigned max_buffered_mem = 512)
23+
unsigned max_buffered_mem = 8192)
2424
: cll_{cll}, max_buffered_cnt_{max_buffered_cnt}, max_buffered_mem_{max_buffered_mem} {
2525
}
2626

0 commit comments

Comments
 (0)