This is an automated email from the ASF dual-hosted git repository. xuanwo pushed a commit to branch poll-write in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
commit b24330c4d74db8672734df96d59b006928509b91 Author: Xuanwo <[email protected]> AuthorDate: Mon Sep 11 16:48:03 2023 +0800 Polish logging Signed-off-by: Xuanwo <[email protected]> --- core/src/layers/logging.rs | 24 +++++++++++++----------- core/src/raw/oio/write/range_write.rs | 8 ++++++-- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/core/src/layers/logging.rs b/core/src/layers/logging.rs index 42084eede..71bb7c099 100644 --- a/core/src/layers/logging.rs +++ b/core/src/layers/logging.rs @@ -1258,12 +1258,13 @@ impl<W: oio::Write> oio::Write for LoggingWriter<W> { self.written += n as u64; trace!( target: LOGGING_TARGET, - "service={} operation={} path={} written={} -> data write {}B", + "service={} operation={} path={} written={}B -> input data {}B, write {}B", self.ctx.scheme, WriteOperation::Write, self.path, self.written, - n + bs.remaining(), + n, ); Poll::Ready(Ok(n)) } @@ -1272,7 +1273,7 @@ impl<W: oio::Write> oio::Write for LoggingWriter<W> { log!( target: LOGGING_TARGET, lvl, - "service={} operation={} path={} written={} -> data write failed: {}", + "service={} operation={} path={} written={}B -> data write failed: {}", self.ctx.scheme, WriteOperation::Write, self.path, @@ -1290,7 +1291,7 @@ impl<W: oio::Write> oio::Write for LoggingWriter<W> { Ok(_) => { trace!( target: LOGGING_TARGET, - "service={} operation={} path={} written={} -> abort writer", + "service={} operation={} path={} written={}B -> abort writer", self.ctx.scheme, WriteOperation::Abort, self.path, @@ -1303,7 +1304,7 @@ impl<W: oio::Write> oio::Write for LoggingWriter<W> { log!( target: LOGGING_TARGET, lvl, - "service={} operation={} path={} written={} -> abort writer failed: {}", + "service={} operation={} path={} written={}B -> abort writer failed: {}", self.ctx.scheme, WriteOperation::Abort, self.path, @@ -1321,7 +1322,7 @@ impl<W: oio::Write> oio::Write for LoggingWriter<W> { Ok(_) => { debug!( target: LOGGING_TARGET, - "service={} operation={} path={} written={} -> data written finished", + "service={} operation={} path={} written={}B -> data written finished", self.ctx.scheme, self.op, self.path, @@ -1334,7 +1335,7 @@ impl<W: oio::Write> oio::Write for LoggingWriter<W> { log!( target: LOGGING_TARGET, lvl, - "service={} operation={} path={} written={} -> data close failed: {}", + "service={} operation={} path={} written={}B -> data close failed: {}", self.ctx.scheme, WriteOperation::Close, self.path, @@ -1355,11 +1356,12 @@ impl<W: oio::BlockingWrite> oio::BlockingWrite for LoggingWriter<W> { self.written += n as u64; trace!( target: LOGGING_TARGET, - "service={} operation={} path={} written={} -> data write {}B", + "service={} operation={} path={} written={}B -> input data {}B, write {}B", self.ctx.scheme, WriteOperation::BlockingWrite, self.path, self.written, + bs.remaining(), n ); Ok(n) @@ -1369,7 +1371,7 @@ impl<W: oio::BlockingWrite> oio::BlockingWrite for LoggingWriter<W> { log!( target: LOGGING_TARGET, lvl, - "service={} operation={} path={} written={} -> data write failed: {}", + "service={} operation={} path={} written={}B -> data write failed: {}", self.ctx.scheme, WriteOperation::BlockingWrite, self.path, @@ -1387,7 +1389,7 @@ impl<W: oio::BlockingWrite> oio::BlockingWrite for LoggingWriter<W> { Ok(_) => { debug!( target: LOGGING_TARGET, - "service={} operation={} path={} written={} -> data written finished", + "service={} operation={} path={} written={}B -> data written finished", self.ctx.scheme, self.op, self.path, @@ -1400,7 +1402,7 @@ impl<W: oio::BlockingWrite> oio::BlockingWrite for LoggingWriter<W> { log!( target: LOGGING_TARGET, lvl, - "service={} operation={} path={} written={} -> data close failed: {}", + "service={} operation={} path={} written={}B -> data close failed: {}", self.ctx.scheme, WriteOperation::BlockingClose, self.path, diff --git a/core/src/raw/oio/write/range_write.rs b/core/src/raw/oio/write/range_write.rs index ae4558a4c..f01f7d40f 100644 --- a/core/src/raw/oio/write/range_write.rs +++ b/core/src/raw/oio/write/range_write.rs @@ -128,7 +128,6 @@ impl<W: RangeWrite> oio::Write for RangeWriter<W> { loop { match &mut self.state { State::Idle(w) => { - let w = w.take().unwrap(); match self.location.clone() { Some(location) => { let remaining = bs.remaining(); @@ -152,6 +151,7 @@ impl<W: RangeWrite> oio::Write for RangeWriter<W> { align_buffer.push(bs); let written = self.written; + let w = w.take().unwrap(); let fut = async move { let size = align_buffer.len() as u64; let res = w @@ -168,6 +168,7 @@ impl<W: RangeWrite> oio::Write for RangeWriter<W> { self.state = State::Write(Box::pin(fut)); } None => { + let w = w.take().unwrap(); let fut = async move { let res = w.initiate_range().await; @@ -188,7 +189,10 @@ impl<W: RangeWrite> oio::Write for RangeWriter<W> { let (consume, written) = res?; self.written += written; self.align_buffer.clear(); - return Poll::Ready(Ok(consume)); + // It's possible that the buffer is already aligned, no bytes has been consumed. + if consume != 0 { + return Poll::Ready(Ok(consume)); + } } State::Complete(_) => { unreachable!("RangeWriter must not go into State::Complete during poll_write")
