prometheus-client-mmap 1.0.0-arm64-darwin → 1.0.2-arm64-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/fast_mmaped_file_rs/src/file_info.rs +51 -1
- data/ext/fast_mmaped_file_rs/src/mmap.rs +2 -2
- data/lib/2.7/fast_mmaped_file_rs.bundle +0 -0
- data/lib/3.0/fast_mmaped_file_rs.bundle +0 -0
- data/lib/3.1/fast_mmaped_file_rs.bundle +0 -0
- data/lib/3.2/fast_mmaped_file_rs.bundle +0 -0
- data/lib/prometheus/client/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf293027b7a0009519bc4470150ede16a4a0491726b086df0d99b18945a1eb80
|
4
|
+
data.tar.gz: d87ed963f3e69e1d87fe50207fe6727a26b26375bf3b97be001163b2a9b67687
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5061a1d9f56ffa28c6dc61393eec6c51bbbd086edcf37682202b55486486543eea540dba891baf9ff865504c59a20265be1071bebcd8e6eafd7ad5e08a5d06e4
|
7
|
+
data.tar.gz: 97250c100344cb7e665395f09e51db69af539778e261d83c970ba5cd4a5916b7c8e033bb388d389ea6e7681e74c26bf6d4a4031bc6f3245dc1b2329a896dd5b8
|
@@ -91,6 +91,11 @@ impl FileInfo {
|
|
91
91
|
|
92
92
|
match self.file.read_to_end(buf) {
|
93
93
|
Ok(n) if n == self.len => Ok(()),
|
94
|
+
// A worker may expand the file between our `stat` and `read`, no harm done.
|
95
|
+
Ok(n) if n > self.len => {
|
96
|
+
self.len = n;
|
97
|
+
Ok(())
|
98
|
+
}
|
94
99
|
Ok(_) => Err(MmapError::io(
|
95
100
|
"read",
|
96
101
|
&self.path,
|
@@ -106,6 +111,8 @@ mod test {
|
|
106
111
|
use magnus::{eval, RArray, Symbol};
|
107
112
|
use rand::{thread_rng, Rng};
|
108
113
|
use sha2::{Digest, Sha256};
|
114
|
+
use std::fs;
|
115
|
+
use std::io::Write;
|
109
116
|
|
110
117
|
use super::*;
|
111
118
|
use crate::testhelper::TestFile;
|
@@ -165,7 +172,7 @@ mod test {
|
|
165
172
|
|
166
173
|
let mut info = FileInfo {
|
167
174
|
file,
|
168
|
-
path,
|
175
|
+
path: path.clone(),
|
169
176
|
len: buf.len(),
|
170
177
|
multiprocess_mode: Symbol::new("puma"),
|
171
178
|
type_: Symbol::new("max"),
|
@@ -187,4 +194,47 @@ mod test {
|
|
187
194
|
|
188
195
|
assert_eq!(in_hash, out_hash, "content hashes");
|
189
196
|
}
|
197
|
+
|
198
|
+
#[test]
|
199
|
+
fn test_read_from_file_resized() {
|
200
|
+
let _cleanup = unsafe { magnus::embed::init() };
|
201
|
+
let ruby = magnus::Ruby::get().unwrap();
|
202
|
+
crate::init(&ruby).unwrap();
|
203
|
+
|
204
|
+
const BUF_LEN: usize = 1 << 14; // 16KiB
|
205
|
+
|
206
|
+
// Create a buffer with random data.
|
207
|
+
let mut buf = vec![0u8; BUF_LEN];
|
208
|
+
thread_rng().fill(buf.as_mut_slice());
|
209
|
+
|
210
|
+
let TestFile {
|
211
|
+
file,
|
212
|
+
path,
|
213
|
+
dir: _dir,
|
214
|
+
} = TestFile::new(&buf);
|
215
|
+
|
216
|
+
let mut info = FileInfo {
|
217
|
+
file,
|
218
|
+
path: path.clone(),
|
219
|
+
len: buf.len(),
|
220
|
+
multiprocess_mode: Symbol::new("puma"),
|
221
|
+
type_: Symbol::new("max"),
|
222
|
+
pid: "worker-0_0".to_string(),
|
223
|
+
};
|
224
|
+
|
225
|
+
let mut resized_file = fs::OpenOptions::new()
|
226
|
+
.write(true)
|
227
|
+
.append(true)
|
228
|
+
.open(path)
|
229
|
+
.unwrap();
|
230
|
+
|
231
|
+
// Write data to file after it has been `stat`ed in the
|
232
|
+
// constructor.
|
233
|
+
resized_file.write_all(&[1; 1024]).unwrap();
|
234
|
+
|
235
|
+
let mut out_buf = Vec::new();
|
236
|
+
info.read_from_file(&mut out_buf).unwrap();
|
237
|
+
|
238
|
+
assert_eq!(BUF_LEN + 1024, info.len, "resized file updated len");
|
239
|
+
}
|
190
240
|
}
|
@@ -536,14 +536,14 @@ impl MmapedFile {
|
|
536
536
|
match file.seek(SeekFrom::Start(len - 1)) {
|
537
537
|
Ok(_) => {}
|
538
538
|
Err(_) => {
|
539
|
-
return Err(MmapError::
|
539
|
+
return Err(MmapError::with_errno(format!("Can't lseek {}", len - 1)));
|
540
540
|
}
|
541
541
|
}
|
542
542
|
|
543
543
|
match file.write(&[0x0]) {
|
544
544
|
Ok(1) => {}
|
545
545
|
_ => {
|
546
|
-
return Err(MmapError::
|
546
|
+
return Err(MmapError::with_errno(format!(
|
547
547
|
"Can't extend {}",
|
548
548
|
path.display()
|
549
549
|
)));
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prometheus-client-mmap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: arm64-darwin
|
6
6
|
authors:
|
7
7
|
- Tobias Schmidt
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2023-11
|
14
|
+
date: 2023-12-11 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rb_sys
|