@@ -13,11 +13,13 @@ use indexmap::IndexMap;
13
13
use tar:: { Builder as TarBuilder , Header as TarHeader } ;
14
14
use tempfile:: tempfile;
15
15
16
+ #[ cfg( unix) ]
16
17
struct TempfileBackedBuffer {
17
18
_file : File ,
18
19
mmap : NonNull < [ u8 ] > ,
19
20
}
20
21
22
+ #[ cfg( unix) ]
21
23
impl TempfileBackedBuffer {
22
24
fn new ( file : File ) -> Fallible < TempfileBackedBuffer > {
23
25
let len = file. metadata ( ) ?. len ( ) . try_into ( ) . unwrap ( ) ;
@@ -45,6 +47,7 @@ impl TempfileBackedBuffer {
45
47
}
46
48
}
47
49
50
+ #[ cfg( unix) ]
48
51
impl Drop for TempfileBackedBuffer {
49
52
fn drop ( & mut self ) {
50
53
unsafe {
@@ -139,6 +142,7 @@ fn iterate<'a, DB: ReadResults + 'a>(
139
142
} )
140
143
}
141
144
145
+ #[ allow( unused_mut) ]
142
146
fn write_all_archive < DB : ReadResults , W : ReportWriter > (
143
147
db : & DB ,
144
148
ex : & Experiment ,
@@ -159,11 +163,25 @@ fn write_all_archive<DB: ReadResults, W: ReportWriter>(
159
163
all. append_data ( & mut header, & entry. path , & entry. log_bytes [ ..] ) ?;
160
164
}
161
165
162
- let data = all. into_inner ( ) ?. finish ( ) ?;
163
- let buffer = TempfileBackedBuffer :: new ( data) ?;
166
+ let mut data = all. into_inner ( ) ?. finish ( ) ?;
167
+ let mut buffer;
168
+ let view;
169
+ #[ cfg( unix) ]
170
+ {
171
+ buffer = TempfileBackedBuffer :: new ( data) ?;
172
+ view = buffer. buffer ( ) ;
173
+ }
174
+ #[ cfg( not( unix) ) ]
175
+ {
176
+ use std:: io:: { Read , Seek } ;
177
+ data. rewind ( ) ?;
178
+ buffer = Vec :: new ( ) ;
179
+ data. read_to_end ( & mut buffer) ?;
180
+ view = & buffer[ ..] ;
181
+ }
164
182
match dest. write_bytes (
165
183
"logs-archives/all.tar.gz" ,
166
- buffer . buffer ( ) ,
184
+ view ,
167
185
& "application/gzip" . parse ( ) . unwrap ( ) ,
168
186
EncodingType :: Plain ,
169
187
) {
@@ -177,7 +195,7 @@ fn write_all_archive<DB: ReadResults, W: ReportWriter>(
177
195
"retry ({}/{}) writing logs-archives/all.tar.gz ({} bytes) (error: {:?})" ,
178
196
i,
179
197
RETRIES ,
180
- buffer . buffer ( ) . len( ) ,
198
+ view . len( ) ,
181
199
e,
182
200
) ;
183
201
continue ;
0 commit comments