prometheus-client-mmap 1.0.0-arm64-darwin → 1.0.1-arm64-darwin

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d9df78b71d36cb00132ac5a55bf93413aa83c72f9db5e06e875322b792a5960
4
- data.tar.gz: 2154b6fe6a62c76a755f49f35ebd5865f9edc69746cecf1df0ce07b1873ea1aa
3
+ metadata.gz: c3fe4d8e0bf27904ce318f8cd9db156ff474b1f00bc315f6bf819749614faa64
4
+ data.tar.gz: 7dc42b1c52ead941cc7d3ee552deb4ce743279371ab80e50836d4d6e09814537
5
5
  SHA512:
6
- metadata.gz: 929a83c258de11c6ac665854e74cf34f4ea0c7620bccc9cf99f6609c0844948308767291ccdeeae73f5629c413e81efed598de7afe7e93b1316ec2d7ba920e59
7
- data.tar.gz: 87255dcf19344b59ac15443fbe4c21fc8ef3578422798384c1250d2fe079778a155cea70e16323f23c7c71094509e2a22dc2325f931cb9b52df93244cd21811f
6
+ metadata.gz: 13f754bc75e0cf1aca8e8523341b80812cbe2ab9071ea0f6348a66ca285454ab076821a7ee315025ee82fce39de0d3a872d0387359742b0e41c47dfb537a4628
7
+ data.tar.gz: b7f8a9618453235cd0a9dc995a3740fcc339f0ad9f2e80d0095a3f9d6f394c211065f174b3dc618b81ef004bef32ef6683411f6f776d6fdbd8c417ed923d0cad
@@ -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
  }
Binary file
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  module Prometheus
2
2
  module Client
3
- VERSION = '1.0.0'.freeze
3
+ VERSION = '1.0.1'.freeze
4
4
  end
5
5
  end
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.0
4
+ version: 1.0.1
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-15 00:00:00.000000000 Z
14
+ date: 2023-12-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rb_sys