From e5a6e8401e3192c90fe50cf20f26b7f311e05973 Mon Sep 17 00:00:00 2001 From: Patrick LeBlanc Date: Tue, 27 Aug 2019 14:40:40 -0500 Subject: [PATCH] MCOL-3460. Found that indeed this is a worthwhile optimization. Write and appendtask were breaking the incoming data into 1MB chunks to call IOC::write/append() with. Keeping the limit for safety, but bumping it to 100MB. --- storage-manager/src/AppendTask.cpp | 3 ++- storage-manager/src/PosixTask.cpp | 4 ++-- storage-manager/src/WriteTask.cpp | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/storage-manager/src/AppendTask.cpp b/storage-manager/src/AppendTask.cpp index 991e56b54..79333a737 100644 --- a/storage-manager/src/AppendTask.cpp +++ b/storage-manager/src/AppendTask.cpp @@ -68,7 +68,8 @@ bool AppendTask::run() ssize_t readCount = 0, writeCount = 0; vector databuf; - uint bufsize = min(1 << 20, cmd->count); // 1 MB + uint bufsize = min(100 << 20, cmd->count); // 100 MB + //uint bufsize = cmd->count; databuf.resize(bufsize); while (readCount < cmd->count) diff --git a/storage-manager/src/PosixTask.cpp b/storage-manager/src/PosixTask.cpp index a1bb9f369..31486e49f 100644 --- a/storage-manager/src/PosixTask.cpp +++ b/storage-manager/src/PosixTask.cpp @@ -108,7 +108,7 @@ bool PosixTask::read(uint8_t *buf, uint length) while (count < length) { err = ::recv(sock, &buf[count], length - count, 0); - if (err <= 0) + if (err < 0) return false; count += err; @@ -207,7 +207,7 @@ void PosixTask::consumeMsg() while (remainingLengthInStream > 0) { - logger->log(LOG_ERR,"ERROR: eating data."); + logger->log(LOG_WARNING, "PosixTask::consumeMsg(): Discarding the tail end of a partial msg."); err = ::recv(sock, buf, min(remainingLengthInStream, 1024), 0); if (err <= 0) { remainingLengthInStream = 0; diff --git a/storage-manager/src/WriteTask.cpp b/storage-manager/src/WriteTask.cpp index bc9997563..c8e0e2372 100644 --- a/storage-manager/src/WriteTask.cpp +++ b/storage-manager/src/WriteTask.cpp @@ -68,7 +68,8 @@ bool WriteTask::run() ssize_t readCount = 0, writeCount = 0; vector databuf; - uint bufsize = min(1 << 20, cmd->count); // 1 MB + uint bufsize = min(100 << 20, cmd->count); // 100 MB + //uint bufsize = cmd->count; databuf.resize(bufsize); while (readCount < cmd->count)