pg-locks-monitor 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f95c5c531f0c74143c8fa74417344e1e5b3e400b06f910528541a69ee89f0aaa
4
- data.tar.gz: fd704b6c9562678541aaaa1cbd98ab997281a529cbfba35f0235466000de0599
3
+ metadata.gz: 170cb606bd1459b6b1a7525ed08ce17f2aab0757703ec9a33f64dadeafdebf7c
4
+ data.tar.gz: 503f92da91e4ca9d03999c45abb50507f8888b209df33c4a0e8b87e4cfdcb6b5
5
5
  SHA512:
6
- metadata.gz: 0c467b40b8114d8ca11a5aa89b91e5d0d3637a287d041e8f2d383f0465798d38e8d20f0248408fa4dbce90ef6eb74ef3bb022f78815fb3d676c07272279892b6
7
- data.tar.gz: 9fdcecb73e646f43a2143db60a12d01f0cc766ed9ee633a63ca1254cce82c7de5688c1594c518b7adf269aed67a77d8da2c4e25a363372beaf19fa9d91b253c5
6
+ metadata.gz: 27d0ac7d4340b0de7739b6383ec203830ab92eb5b952cbc41b9447c6d41aa540d52522f067bd1cdd857802c6c8a49a16ddaff9b95f2c51beed0f3e3b8dae6022
7
+ data.tar.gz: b4594194b88910f3fcc2e9c7e79205147076ff0fcd6ccf79ca2bc0e7e4290a3d5167e041f7660e72ecdfff1e7fe598684f103256a976582c83c884b8639dc77d
data/README.md CHANGED
@@ -133,14 +133,18 @@ Here's a sample lock notification:
133
133
  "transactionid": null,
134
134
  # bool indicating if the lock is already granted
135
135
  "granted": true,
136
- # type of the acquired lock
136
+ # mode of the acquired lock
137
137
  "mode": "RowExclusiveLock",
138
138
  # SQL query which acquired the lock
139
139
  "query_snippet": "UPDATE \"users\" SET \"updated_at\" = $1 WHERE \"users\".\"id\" = $2 from/sidekiq_job:UserUpdater/",
140
140
  # age of the lock
141
141
  "age": "PT0.94945S",
142
142
  # app that acquired the lock
143
- "application": "bin/sidekiq"
143
+ "application": "bin/sidekiq",
144
+ # ID of the database where lock was acquired
145
+ "database": "84759327",
146
+ # type of the acquired lock
147
+ "locktype": "relation",
144
148
  },
145
149
  ```
146
150
 
@@ -204,7 +208,7 @@ PgLocksMonitor.configure do |config|
204
208
  # ...
205
209
 
206
210
  config.blocking_filter_proc = -> (lock) {
207
- lock.fetch("blocked_sql_app").downcase.include?("sidekiq")
211
+ !lock.fetch("blocked_sql_app").downcase.include?("sidekiq")
208
212
  }
209
213
  end
210
214
  ```
@@ -2,10 +2,11 @@
2
2
 
3
3
  require "uri"
4
4
  require "pg"
5
+ require "ruby-pg-extras"
5
6
 
6
7
  module PgLocksMonitor
7
8
  def self.snapshot!
8
- locks = RailsPgExtras.locks(
9
+ locks = RubyPgExtras.locks(
9
10
  in_format: :hash,
10
11
  ).select do |lock|
11
12
  if (age = lock.fetch("age"))
@@ -14,16 +15,16 @@ module PgLocksMonitor
14
15
  end.select(&configuration.locks_filter_proc)
15
16
  .first(configuration.locks_limit)
16
17
 
17
- if locks.present? && configuration.monitor_locks
18
+ if locks.count > 0 && configuration.monitor_locks
18
19
  configuration.notifier_class.call(locks)
19
20
  end
20
21
 
21
- blocking = RailsPgExtras.blocking(in_format: :hash).select do |block|
22
+ blocking = RubyPgExtras.blocking(in_format: :hash).select do |block|
22
23
  (ActiveSupport::Duration.parse(block.fetch("blocking_duration")).to_f * 1000) > configuration.blocking_min_duration_ms
23
24
  end.select(&configuration.blocking_filter_proc)
24
25
  .first(configuration.locks_limit)
25
26
 
26
- if blocking.present? && configuration.monitor_blocking
27
+ if blocking.count > 0 && configuration.monitor_blocking
27
28
  configuration.notifier_class.call(blocking)
28
29
  end
29
30
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgLocksMonitor
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.2"
5
5
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe PgLocksMonitor do
6
+ describe "snapshot!" do
7
+ it "works" do
8
+ expect {
9
+ PgLocksMonitor.snapshot!
10
+ }.not_to raise_error
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg-locks-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - pawurb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-17 00:00:00.000000000 Z
11
+ date: 2024-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-pg-extras
@@ -105,6 +105,7 @@ files:
105
105
  - pg-locks-monitor.gemspec
106
106
  - spec/configuration_spec.rb
107
107
  - spec/default_notifier_spec.rb
108
+ - spec/smoke_spec.rb
108
109
  - spec/spec_helper.rb
109
110
  homepage: http://github.com/pawurb/pg-locks-monitor
110
111
  licenses:
@@ -133,4 +134,5 @@ summary: Observe PostgreSQL database locks obtained by a Rails application.
133
134
  test_files:
134
135
  - spec/configuration_spec.rb
135
136
  - spec/default_notifier_spec.rb
137
+ - spec/smoke_spec.rb
136
138
  - spec/spec_helper.rb