freekiqs 5.0.0 → 6.5.0

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
- SHA1:
3
- metadata.gz: 44594d919a76aa86c249eb5fe88a9af8f95ba253
4
- data.tar.gz: b788548a59466399a3e58ed192cd4344b6d37df4
2
+ SHA256:
3
+ metadata.gz: d6b06dcd42bf69b36943cb98073500edaa179251c807284ac1520788f4f9b868
4
+ data.tar.gz: 7d273e8393c7f4ec61b2bc3488daaa3a8e7c4d2c3c4e323d0787f3217a1ec772
5
5
  SHA512:
6
- metadata.gz: fbeab3d19cea8a86adf9e8a47e9cfab8e3739da4d53157fe82418bd838550736c77a414e81b505ccb7dba7663292058bc63b133fabebc2f4048dda0f8ed79f41
7
- data.tar.gz: f0e33f9fc4851bfbfb1f4ff1b6f09cdc14dd4ba282e413b8c8e3c69366a4006f63af5edc63eda77b970660d9baa91d17da57468b06f9c5820a625bdb68ebdff0
6
+ metadata.gz: beeb49dbe17a46885ab99ff7c2128645fb739496a7636a2a0b8f041c7b1099dfd42e291f23d15bf49b0ff4b1da09d01da8a8f8d2cb9ed482db09982143d64d65
7
+ data.tar.gz: 1ce3a30d1d569967f3c0b3fe6941baf00cfaa6c99da09436e87481b29e8dfa1412cef2ede6853ae4c9e6099aa547149b01c943ac613891cb7b39d0020c7b44e1
data/.gitignore CHANGED
@@ -6,3 +6,5 @@ pkg
6
6
  /.bundle
7
7
  /.vagrant
8
8
  /ubuntu-*-console.log
9
+ /vendor
10
+ dump.rdb
data/Procfile ADDED
@@ -0,0 +1 @@
1
+ redis: redis-server development/redis/redis.conf --bind $HOST
data/README.md CHANGED
@@ -5,6 +5,21 @@ by failed jobs and wrapping them with a `FreekiqException` exception class
5
5
  that can be filtered by monitoring tools such as New Relic and
6
6
  Rollbar.
7
7
 
8
+ #### Implementation Details
9
+
10
+ This relies on Sidekiq's built-in retry handling. Specifically, its
11
+ `retry_count` value. When a job first fails, its `retry_count` value
12
+ is nil (because it hasn't actually been retried yet). That exception,
13
+ along with subsequent exceptions from retries, are caught and wrapped
14
+ with the `FreekiqException` exception.
15
+ Cases where Freekiqs does NOT wrap the exception:
16
+ - The `retry` option is false
17
+ - The `freekiqs` option is not set on the worker nor globally
18
+ - The `freekiqs` option is not set on worker and set to `false` globally
19
+ - The `freekiqs` option is set to `false` on the worker
20
+ - The job threw an exception that is not a StandardError (nor a subclass)
21
+ - The number of thrown exceptions is more than specified freekiqs
22
+
8
23
  Configuration example (in config/initializers/sidekiq.rb):
9
24
  ``` ruby
10
25
  Sidekiq.configure_server do |config|
@@ -101,26 +116,4 @@ If MyWorker throws a SubMyError or MyError, it will get freekiq'd.
101
116
  Version 5 of this gem only works with Sidekiq 5 and higher. If you are using
102
117
  an older version of Sidekiq, you'll need to use version [4.1.0](https://github.com/BookBub/freekiqs/tree/v4.1.0).
103
118
 
104
- ## Overview
105
-
106
- Up to the configured number of "freekiqs", catch exceptions thrown
107
- from job and wrap them with the `FreekiqException` exception (which is a
108
- `RuntimeError`). That exception type can be ignored by monitoring
109
- tools. If job fails more times than configured "freekiqs", thrown
110
- exception will not be wrapped. That should result in normal operation
111
- and the exception showing up in monitoring tools.
112
-
113
- #### Implementation Details
114
-
115
- This relies on Sidekiq's built-in retry handling. Specifically, its
116
- `retry_count` value. When a job first fails, its `retry_count` value
117
- is nil (because it hasn't actually been retried yet). That exception,
118
- along with subsequent exceptions from retries, are caught and wrapped
119
- with the `FreekiqException` exception.
120
- Cases where Freekiqs does NOT wrap the exception:
121
- - The `retry` option is false
122
- - The `freekiqs` option is not set on the worker nor globally
123
- - The `freekiqs` option is not set on worker and set to `false` globally
124
- - The `freekiqs` option is set to `false` on the worker
125
- - The job threw an exception that is not a StandardError (nor a subclass)
126
- - The number of thrown exceptions is more than specified freekiqs
119
+ Version 6.5.0 of this gem works with Sidekiq 6.5 and higher.
@@ -0,0 +1,49 @@
1
+ protected-mode yes
2
+ port 6379
3
+ tcp-backlog 511
4
+ timeout 0
5
+ tcp-keepalive 300
6
+ daemonize no
7
+ supervised no
8
+ pidfile development/redis/redis_6379.pid
9
+ loglevel warning
10
+ logfile ""
11
+ databases 16
12
+ save 900 1
13
+ save 300 10
14
+ save 60 10000
15
+ stop-writes-on-bgsave-error yes
16
+ rdbcompression yes
17
+ rdbchecksum yes
18
+ dbfilename dump.rdb
19
+ dir development/redis
20
+ slave-serve-stale-data yes
21
+ slave-read-only yes
22
+ repl-diskless-sync no
23
+ repl-diskless-sync-delay 5
24
+ repl-disable-tcp-nodelay no
25
+ slave-priority 100
26
+ appendonly no
27
+ appendfilename "appendonly.aof"
28
+ appendfsync no
29
+ no-appendfsync-on-rewrite no
30
+ auto-aof-rewrite-percentage 100
31
+ auto-aof-rewrite-min-size 64mb
32
+ aof-load-truncated yes
33
+ lua-time-limit 5000
34
+ latency-monitor-threshold 0
35
+ notify-keyspace-events ""
36
+ hash-max-ziplist-entries 512
37
+ hash-max-ziplist-value 64
38
+ list-max-ziplist-size -2
39
+ list-compress-depth 0
40
+ set-max-intset-entries 512
41
+ zset-max-ziplist-entries 128
42
+ zset-max-ziplist-value 64
43
+ hll-sparse-max-bytes 3000
44
+ activerehashing yes
45
+ client-output-buffer-limit normal 0 0 0
46
+ client-output-buffer-limit slave 256mb 64mb 60
47
+ client-output-buffer-limit pubsub 32mb 8mb 60
48
+ hz 10
49
+ aof-rewrite-incremental-fsync yes
data/freekiqs.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = 'freekiqs'
5
- gem.version = '5.0.0'
5
+ gem.version = '6.5.0'
6
6
  gem.authors = ['Rob Lewis']
7
7
  gem.email = ['rob@bookbub.com']
8
8
  gem.summary = 'Sidekiq middleware extending RetryJobs to allow silient errors.'
@@ -16,6 +16,6 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ['lib']
17
17
  gem.required_ruby_version = '>= 2.2.2'
18
18
 
19
- gem.add_dependency 'sidekiq', '>= 5.0.0'
19
+ gem.add_dependency 'sidekiq', '>= 6.5.0'
20
20
  gem.add_development_dependency 'rspec', '>= 3.6.0'
21
21
  end
@@ -1,5 +1,5 @@
1
1
  require 'sidekiq'
2
- require 'sidekiq/util'
2
+ require 'sidekiq/middleware/modules'
3
3
 
4
4
  module Sidekiq
5
5
  class FreekiqException < RuntimeError; end
@@ -7,7 +7,7 @@ module Sidekiq
7
7
  module Middleware
8
8
  module Server
9
9
  class Freekiqs
10
- include Sidekiq::Util
10
+ include Sidekiq::ServerMiddleware
11
11
  @@callback = nil
12
12
 
13
13
  def initialize(opts={})
@@ -25,12 +25,12 @@ module Sidekiq
25
25
  begin
26
26
  @@callback.call(worker, msg, queue) if @@callback
27
27
  rescue => callback_exception
28
- Sidekiq.logger.info { "Freekiq callback failed for #{msg['class']} job #{msg['jid']}" }
28
+ logger.info { "Freekiq callback failed for #{msg['class']} job #{msg['jid']}" }
29
29
  ensure
30
30
  raise FreekiqException, ex.message
31
31
  end
32
32
  else
33
- Sidekiq.logger.info { "Out of freekiqs for #{msg['class']} job #{msg['jid']}" }
33
+ logger.info { "Out of freekiqs for #{msg['class']} job #{msg['jid']}" }
34
34
  end
35
35
  end
36
36
  raise ex
data/shell.nix ADDED
@@ -0,0 +1,42 @@
1
+ { system ? builtins.currentSystem }:
2
+
3
+ with (import (fetchTarball {
4
+ name = "nixpkgs-21.11";
5
+ url = "https://github.com/nixos/nixpkgs/archive/21.11.tar.gz";
6
+ sha256 = "162dywda2dvfj1248afxc45kcrg83appjd0nmdb541hl7rnncf02";
7
+ }) { inherit system; });
8
+
9
+
10
+ let
11
+ requiredNixVersion = "2.3";
12
+
13
+ pwd = builtins.getEnv "PWD";
14
+ in
15
+
16
+ if lib.versionOlder builtins.nixVersion requiredNixVersion == true then
17
+ abort "This project requires Nix >= ${requiredNixVersion}, please run 'nix-channel --update && nix-env -i nix'."
18
+ else
19
+
20
+ mkShell {
21
+ buildInputs = [
22
+ stdenv
23
+ git
24
+ cacert
25
+
26
+ # Ruby and Rails dependencies
27
+ ruby_2_7.devEnv
28
+ bundler
29
+
30
+ # Services
31
+ overmind
32
+ redis
33
+
34
+ ] ++ lib.optional (!stdenv.isDarwin) [
35
+ # linux-only packages
36
+ glibcLocales
37
+ ];
38
+
39
+ HOST = "127.0.0.24";
40
+ REDIS_URL="redis://127.0.0.24:6379/1";
41
+ BUNDLE_PATH = "vendor/bundle";
42
+ }
@@ -1,3 +1,5 @@
1
+ require 'sidekiq'
2
+ require 'sidekiq/api'
1
3
  require 'sidekiq/processor'
2
4
 
3
5
  RSpec.describe Sidekiq::Middleware::Server::Freekiqs do
@@ -15,8 +17,7 @@ RSpec.describe Sidekiq::Middleware::Server::Freekiqs do
15
17
  end
16
18
 
17
19
  def process_job(job_hash)
18
- mgr = instance_double('Manager', options: {:queues => ['default']})
19
- processor = ::Sidekiq::Processor.new(mgr)
20
+ processor = Sidekiq::Processor.new(Sidekiq)
20
21
  job_msg = Sidekiq.dump_json(job_hash)
21
22
  processor.process(Sidekiq::BasicFetch::UnitOfWork.new('queue:default', job_msg))
22
23
  end
data/spec/spec_helper.rb CHANGED
@@ -2,7 +2,7 @@ require 'freekiqs'
2
2
 
3
3
  $TESTING = true
4
4
 
5
- Sidekiq::Logging.logger = nil
5
+ Sidekiq.logger = nil
6
6
 
7
7
  # This file was generated by the `rspec --init` command. Conventionally, all
8
8
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freekiqs
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 6.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Lewis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-03 00:00:00.000000000 Z
11
+ date: 2022-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.0.0
19
+ version: 6.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 5.0.0
26
+ version: 6.5.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -50,13 +50,16 @@ files:
50
50
  - ".rspec"
51
51
  - Gemfile
52
52
  - MIT-LICENSE
53
+ - Procfile
53
54
  - README.md
54
55
  - Rakefile
55
56
  - Vagrantfile
56
57
  - circle.yml
58
+ - development/redis/redis.conf
57
59
  - freekiqs.gemspec
58
60
  - lib/freekiqs.rb
59
61
  - lib/sidekiq/middleware/server/freekiqs.rb
62
+ - shell.nix
60
63
  - spec/freekiqs_spec.rb
61
64
  - spec/spec_helper.rb
62
65
  homepage: https://github.com/BookBub/freekiqs
@@ -78,8 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
81
  - !ruby/object:Gem::Version
79
82
  version: '0'
80
83
  requirements: []
81
- rubyforge_project:
82
- rubygems_version: 2.6.11
84
+ rubygems_version: 3.0.3.1
83
85
  signing_key:
84
86
  specification_version: 4
85
87
  summary: Sidekiq middleware extending RetryJobs to allow silient errors.