File tree Expand file tree Collapse file tree 1 file changed +16
-2
lines changed
lib/prometheus/client/data_stores Expand file tree Collapse file tree 1 file changed +16
-2
lines changed Original file line number Diff line number Diff line change @@ -114,8 +114,7 @@ def increment(labels:, by: 1)
114114
115115 key = store_key ( labels )
116116 in_process_sync do
117- value = internal_store . read_value ( key )
118- internal_store . write_value ( key , value + by . to_f )
117+ internal_store . increment_value ( key , by . to_f )
119118 end
120119 end
121120
@@ -286,6 +285,21 @@ def write_value(key, value)
286285 @f . flush
287286 end
288287
288+ def increment_value ( key , by )
289+ if !@positions . has_key? ( key )
290+ init_value ( key )
291+ end
292+
293+ pos = @positions [ key ]
294+ @f . seek ( pos )
295+ value = @f . read ( 8 ) . unpack ( 'd' ) [ 0 ]
296+
297+ now = Process . clock_gettime ( Process ::CLOCK_MONOTONIC )
298+ @f . seek ( -8 , :CUR )
299+ @f . write ( [ value + by , now ] . pack ( 'dd' ) )
300+ @f . flush
301+ end
302+
289303 def close
290304 @f . close
291305 end
You can’t perform that action at this time.
0 commit comments