Skip to content

Commit 25a9c4e

Browse files
committed
Build on alpine, synchronize file right after writing chunk
1 parent 4bc2bcc commit 25a9c4e

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

Dockerfile

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
FROM rust:latest AS builder
1+
FROM alpine:latest AS builder
22
LABEL authors="Anna-Sophie Zaitsewa"
33

4+
RUN apk add rust cargo
5+
46
RUN mkdir /tmp/pcp
57
WORKDIR /tmp/pcp
68
COPY . .
9+
RUN mkdir .cargo
710

811
RUN cargo build --release
912
RUN cp /tmp/pcp/target/release/pretty-copy /usr/bin/pcp
1013

1114
FROM alpine:latest
1215
LABEL authors="Anna-Sophie Zaitsewa"
1316

17+
RUN apk add musl libgcc
1418
COPY --from=builder /usr/bin/pcp /usr/bin/pcp
1519

src/writer/file.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,18 @@ impl Writer for FileWriter{
9191
}
9292

9393
async fn write_chunk(&mut self, chunk: &DynBuffer, size: usize) -> std::io::Result<usize> {
94-
if chunk.len() == size {
94+
let write_result = if chunk.len() == size {
9595
self.file.write(chunk).await
9696
} else { //chunk.len() > size
9797
self.file.write(&chunk[0..size]).await
98+
};
99+
if write_result.is_err(){
100+
return write_result;
101+
}
102+
let sync_result = self.file.sync_all().await;
103+
if sync_result.is_err(){
104+
return Err(std::io::Error::last_os_error());
98105
}
106+
write_result
99107
}
100108
}

0 commit comments

Comments
 (0)