mini_scheduler 0.12.2 → 0.12.3

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: 5245e51580c6faf50498bc135f734972487c05558a6896904bfafee834cc7693
4
- data.tar.gz: 1b8642c7cd5e91dfc6b43defd1c3bc4656114bb7e8fe642c29bba41b74865010
3
+ metadata.gz: def18630479a6ca0133f7131ba4aa59c779f66bd7d979c84e43d90b9c7303927
4
+ data.tar.gz: 0bb8b699e224d2e3b47f9237fc9e9c68d71c6bb4c1ae82e67d55b7c442276997
5
5
  SHA512:
6
- metadata.gz: ca4d9476ead76bcf47fd9a97ae1ab4186f659cb910b112236d2932f5c13eafb47fa173ce4dbeb65693569086c063bc75713565f7dce4ca3b44398a182f41bcda
7
- data.tar.gz: ac955352d65e1748e723b36691880c30cf4fa0db4198d4a2ecf58b7edf00fd23d6161d652c24b9409e793555399563845d82769cf6fe5443fc67e92d7ae3e38e
6
+ metadata.gz: 9ebcc59b92f99824c503682fd33fc4ca11dfa47920ad7fb2b74d2c123534104e0cb3fcc44c1848c2ddac91a80f187a5800dff4536f245e0eac07ad6db01bb0c7
7
+ data.tar.gz: 06074fb819bdce384abee949ddb27b81361a2a42823a8c1a4c25b8e3f5b8854557f7222ed791fa0b4b343aa1467e97eb8eaac98a4c03ae98330a0245bc8cc09f
@@ -1,25 +1,29 @@
1
- # 0.12.2 - 11-09-2019
1
+ # 0.12.3 - 2020-10-15
2
+
3
+ - Fixes a problem where scheduler didn't recover from Redis flush
4
+
5
+ # 0.12.2 - 2019-09-11
2
6
 
3
7
  - Allow sorting schedule history by schedule name
4
8
 
5
- # 0.12.1 - 30-08-2019
9
+ # 0.12.1 - 2019-08-30
6
10
 
7
11
  - Jobs that change family from per host to non per host can cause a tight loop
8
12
 
9
- # 0.12.0 - 29-08-2019
13
+ # 0.12.0 - 2019-08-29
10
14
 
11
15
  - Add support for multiple workers which allows avoiding queue starvation
12
16
 
13
- # 0.11.0 - 24-06-2019
17
+ # 0.11.0 - 2019-06-24
14
18
 
15
19
  - Correct situation where distributed mutex could end in a tight loop when
16
20
  redis could not be contacted
17
21
 
18
- # 0.9.2 - 26-04-2019
22
+ # 0.9.2 - 2019-04-26
19
23
 
20
24
  - Correct UI so it displays durations that are longer than a minute
21
25
 
22
- # 0.9.1 - 21-01-2019
26
+ # 0.9.1 - 2019-01-21
23
27
 
24
28
  - Remove dependency on ActiveSupport and add proper dependency for Sidekiq
25
29
  - Remove Discourse specific bits from Sidekiq web scheduler tab.
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  git_source(:github) { 'https://github.com/discourse/mini_scheduler' }
data/Guardfile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # A sample Guardfile
2
3
  # More info at https://github.com/guard/guard#readme
3
4
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/discourse/mini_scheduler.svg?branch=master)](https://travis-ci.org/discourse/mini_scheduler)
1
+ [![Build Status](https://github.com/discourse/mini_scheduler/workflows/CI/badge.svg)](https://github.com/discourse/mini_scheduler/actions)
2
2
  [![Gem Version](https://badge.fury.io/rb/mini_scheduler.svg)](https://rubygems.org/gems/mini_scheduler)
3
3
 
4
4
  # mini_scheduler
data/Rakefile CHANGED
@@ -1,6 +1,19 @@
1
- require "bundler/gem_tasks"
1
+ #!/usr/bin/env rake
2
+ # frozen_string_literal: true
3
+
2
4
  require "rspec/core/rake_task"
5
+ require 'bundler'
6
+
7
+ begin
8
+ Bundler.setup :default, :development
9
+ Bundler::GemHelper.install_tasks
10
+ rescue Bundler::BundlerError => error
11
+ $stderr.puts error.message
12
+ $stderr.puts "Run `bundle install` to install missing gems"
13
+ exit error.status_code
14
+ end
3
15
 
4
16
  RSpec::Core::RakeTask.new(:spec)
5
17
 
6
- task default: :spec
18
+ desc "Default: run tests"
19
+ task default: [ :spec ]
@@ -12,11 +12,12 @@ module MiniScheduler
12
12
  @manager = manager
13
13
  @hostname = manager.hostname
14
14
 
15
- @reschedule_orphans_thread = Thread.new do
15
+ @recovery_thread = Thread.new do
16
16
  while !@stopped
17
17
  sleep 60
18
18
 
19
19
  @mutex.synchronize do
20
+ repair_queue
20
21
  reschedule_orphans
21
22
  end
22
23
  end
@@ -45,6 +46,12 @@ module MiniScheduler
45
46
  MiniScheduler.handle_job_exception(ex, message: "Scheduling manager keep-alive")
46
47
  end
47
48
 
49
+ def repair_queue
50
+ @manager.repair_queue
51
+ rescue => ex
52
+ MiniScheduler.handle_job_exception(ex, message: "Scheduling manager queue repair")
53
+ end
54
+
48
55
  def reschedule_orphans
49
56
  @manager.reschedule_orphans!
50
57
  rescue => ex
@@ -122,10 +129,10 @@ module MiniScheduler
122
129
  @stopped = true
123
130
 
124
131
  @keep_alive_thread.kill
125
- @reschedule_orphans_thread.kill
132
+ @recovery_thread.kill
126
133
 
127
134
  @keep_alive_thread.join
128
- @reschedule_orphans_thread.join
135
+ @recovery_thread.join
129
136
 
130
137
  enq(nil)
131
138
 
@@ -252,6 +259,15 @@ module MiniScheduler
252
259
  nil
253
260
  end
254
261
 
262
+ def repair_queue
263
+ return if redis.exists?(self.class.queue_key(queue)) ||
264
+ redis.exists?(self.class.queue_key(queue, hostname))
265
+
266
+ self.class.discover_schedules
267
+ .select { |schedule| schedule.queue == queue }
268
+ .each { |schedule| ensure_schedule!(schedule) }
269
+ end
270
+
255
271
  def tick
256
272
  lock do
257
273
  schedule_next_job
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniScheduler
4
- VERSION = "0.12.2"
4
+ VERSION = "0.12.3"
5
5
  end
@@ -15,11 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = "https://github.com/discourse/mini_scheduler"
16
16
  spec.license = "MIT"
17
17
 
18
- # Specify which files should be added to the gem when it is released.
19
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
21
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
- end
18
+ spec.files = `git ls-files`.split($/).reject { |s| s =~ /^(spec|\.)/ }
23
19
  spec.require_paths = ["lib"]
24
20
 
25
21
  spec.add_dependency "sidekiq"
@@ -32,4 +28,5 @@ Gem::Specification.new do |spec|
32
28
  spec.add_development_dependency "guard-rspec"
33
29
  spec.add_development_dependency "mock_redis"
34
30
  spec.add_development_dependency "rake"
31
+ spec.add_development_dependency 'rubocop-discourse'
35
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.2
4
+ version: 0.12.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-09-11 00:00:00.000000000 Z
12
+ date: 2020-10-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sidekiq
@@ -137,6 +137,20 @@ dependencies:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rubocop-discourse
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
140
154
  description: Adds recurring jobs for Sidekiq
141
155
  email:
142
156
  - neil.lalonde@discourse.org
@@ -144,10 +158,6 @@ executables: []
144
158
  extensions: []
145
159
  extra_rdoc_files: []
146
160
  files:
147
- - ".gitignore"
148
- - ".rspec"
149
- - ".rubocop.yml"
150
- - ".travis.yml"
151
161
  - CHANGELOG.md
152
162
  - Gemfile
153
163
  - Guardfile
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- Gemfile.lock
10
- .DS_Store
11
- *.swp
12
-
13
- .rubocop-https---raw-githubusercontent-com-discourse-discourse-master--rubocop-yml
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --require spec_helper --color
@@ -1 +0,0 @@
1
- inherit_from: https://raw.githubusercontent.com/discourse/discourse/master/.rubocop.yml
@@ -1,18 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - ruby-head
4
- - 2.5
5
- - 2.6
6
-
7
- before_install:
8
- - gem install bundler
9
-
10
- cache: bundler
11
- sudo: false
12
-
13
- services:
14
- - redis-server
15
-
16
- matrix:
17
- allow_failures:
18
- - rvm: ruby-head