karafka 2.3.0 → 2.3.1

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: bceb8995575bd7c51d4fa6df9905619082080c932b5295749d9562fb53eba2a7
4
- data.tar.gz: d16247c466fe08f6a671e48e8b25af7edcf2c32d769a497a46245773a66794de
3
+ metadata.gz: 9d28565a68d29a1f8f14be1878bf3a1f41611028069586fb4ece1572b8eb72eb
4
+ data.tar.gz: 8c7f6ea1ec67e07ed107c7347d594a26ba923cecc7282c346eb24863e0324412
5
5
  SHA512:
6
- metadata.gz: 3367c6bace7ab7a1ed7c6ef04e41eefa40c6fef7baf41d0e8e32bb891e1f2799e1564a6ee36b38735b5d514272c88c62e90bcbb54ffa45f175e80b888837d1e5
7
- data.tar.gz: 2d31b87c97ce9deb3d47c0332782ad116dbcf4661a7ea55b35ac04a0e87003a8eb73a5b50f7fc9a21eb1ad288eaafff0528b95133fe58f97ada832526959b628
6
+ metadata.gz: 73d43079b8e83babe2f722acdd11a67d6a5c361998ffada9b46b0f28b3ebc9c430d7b28cf56cb2aba808e25c234fffc7b2ee945e9e265160fb7cba6f821fcc70
7
+ data.tar.gz: 465b1088763ddc3ea63e53ef92765ae5719d6d1a83522288976321d1a64d24616b06d6571ce11425fd8a0dbf36d8c595871b92abfc8de8bcecc444181afe5123
checksums.yaml.gz.sig CHANGED
@@ -1,3 +1,4 @@
1
- B|�gbB��Lz9؋���E��Sl U�Ȇ�)ݦ�M���ZG
2
- �NI��3��s��w�h��j81�ҳ� ���\�pt�p�B����P� h�jr�����
3
- ����~
1
+ �QW�,A�՞`z��D��}���������Zt��j��͡$�p�;ܹY���w��� 2�¨�a��z������M]�q]o!,\d������G��_e{�.�({S�
2
+ ƅ����Jg3kJ��K6��������k2 Hc��Ѭ�9JfH���Yj������+!b\�%�h��
3
+ |Z��t\I�,�X���o��
4
+ ^K���Vja��������@�9���P@ax߯u�>n�-�@�"JT�aR�?� -S��T�!~�ѿ��y��l�XJ�G�6n���0��j@�h/*̵R�����w�<E��[o~gE �+%m��}Ҥ���N�Գ�D��pi���J��Q���˜Z�X"��I����xK=�q�
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Karafka framework changelog
2
2
 
3
+ ## 2.3.1 (2024-02-08)
4
+ - [Refactor] Ensure that `Karafka::Helpers::Async#async_call` can run from multiple threads.
5
+
3
6
  ## 2.3.0 (2024-01-26)
4
7
  - **[Feature]** Introduce Exactly-Once Semantics within consumers `#transaction` block (Pro)
5
8
  - **[Feature]** Provide ability to multiplex subscription groups (Pro)
data/Gemfile CHANGED
@@ -10,7 +10,7 @@ gemspec
10
10
  # They are added here because they are part of the integration suite
11
11
  group :integrations do
12
12
  gem 'activejob'
13
- gem 'karafka-web', '>= 0.8.0.rc1'
13
+ gem 'karafka-web', '>= 0.8.0'
14
14
  end
15
15
 
16
16
  group :test do
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka (2.3.0)
4
+ karafka (2.3.1)
5
5
  karafka-core (>= 2.3.0, < 2.4.0)
6
6
  waterdrop (>= 2.6.12, < 3.0.0)
7
7
  zeitwerk (~> 2.3)
@@ -27,7 +27,7 @@ GEM
27
27
  byebug (11.1.3)
28
28
  concurrent-ruby (1.2.3)
29
29
  connection_pool (2.4.1)
30
- diff-lcs (1.5.0)
30
+ diff-lcs (1.5.1)
31
31
  docile (1.4.0)
32
32
  drb (2.2.0)
33
33
  ruby2_keywords
@@ -41,36 +41,36 @@ GEM
41
41
  concurrent-ruby (~> 1.0)
42
42
  karafka-core (2.3.0)
43
43
  karafka-rdkafka (>= 0.14.8, < 0.15.0)
44
- karafka-rdkafka (0.14.8)
44
+ karafka-rdkafka (0.14.9)
45
45
  ffi (~> 1.15)
46
46
  mini_portile2 (~> 2.6)
47
47
  rake (> 12)
48
- karafka-web (0.8.0.rc1)
48
+ karafka-web (0.8.1)
49
49
  erubi (~> 1.4)
50
- karafka (>= 2.3.0.rc1, < 2.4.0)
51
- karafka-core (>= 2.3.0.rc1, < 2.4.0)
50
+ karafka (>= 2.3.0, < 2.4.0)
51
+ karafka-core (>= 2.3.0, < 2.4.0)
52
52
  roda (~> 3.68, >= 3.69)
53
53
  tilt (~> 2.0)
54
54
  mini_portile2 (2.8.5)
55
55
  minitest (5.21.2)
56
56
  mutex_m (0.2.0)
57
- rack (3.0.8)
57
+ rack (3.0.9)
58
58
  rake (13.1.0)
59
59
  roda (3.76.0)
60
60
  rack
61
- rspec (3.12.0)
62
- rspec-core (~> 3.12.0)
63
- rspec-expectations (~> 3.12.0)
64
- rspec-mocks (~> 3.12.0)
65
- rspec-core (3.12.2)
66
- rspec-support (~> 3.12.0)
67
- rspec-expectations (3.12.3)
61
+ rspec (3.13.0)
62
+ rspec-core (~> 3.13.0)
63
+ rspec-expectations (~> 3.13.0)
64
+ rspec-mocks (~> 3.13.0)
65
+ rspec-core (3.13.0)
66
+ rspec-support (~> 3.13.0)
67
+ rspec-expectations (3.13.0)
68
68
  diff-lcs (>= 1.2.0, < 2.0)
69
- rspec-support (~> 3.12.0)
70
- rspec-mocks (3.12.6)
69
+ rspec-support (~> 3.13.0)
70
+ rspec-mocks (3.13.0)
71
71
  diff-lcs (>= 1.2.0, < 2.0)
72
- rspec-support (~> 3.12.0)
73
- rspec-support (3.12.1)
72
+ rspec-support (~> 3.13.0)
73
+ rspec-support (3.13.0)
74
74
  ruby2_keywords (0.0.5)
75
75
  simplecov (0.22.0)
76
76
  docile (~> 1.1)
@@ -81,7 +81,7 @@ GEM
81
81
  tilt (2.3.0)
82
82
  tzinfo (2.0.6)
83
83
  concurrent-ruby (~> 1.0)
84
- waterdrop (2.6.12)
84
+ waterdrop (2.6.13)
85
85
  karafka-core (>= 2.2.3, < 3.0.0)
86
86
  zeitwerk (~> 2.3)
87
87
  zeitwerk (2.6.12)
@@ -95,7 +95,7 @@ DEPENDENCIES
95
95
  byebug
96
96
  factory_bot
97
97
  karafka!
98
- karafka-web (>= 0.8.0.rc1)
98
+ karafka-web (>= 0.8.0)
99
99
  rspec
100
100
  simplecov
101
101
 
data/README.md CHANGED
@@ -57,8 +57,8 @@ We also maintain many [integration specs](https://github.com/karafka/karafka/tre
57
57
  1. Add and install Karafka:
58
58
 
59
59
  ```bash
60
- # Make sure to install Karafka 2.2
61
- bundle add karafka --version ">= 2.2.10"
60
+ # Make sure to install Karafka 2.3
61
+ bundle add karafka --version ">= 2.3.0"
62
62
 
63
63
  bundle exec karafka install
64
64
  ```
@@ -8,6 +8,12 @@ module Karafka
8
8
  # @note Thread running code needs to manage it's own exceptions. If they leak out, they will
9
9
  # abort thread on exception.
10
10
  module Async
11
+ # Mutex used to ensure we do not create multiple threads if we decide to run this
12
+ # in parallel on multiple threads
13
+ MUTEX = Mutex.new
14
+
15
+ private_constant :MUTEX
16
+
11
17
  class << self
12
18
  # Adds forwardable to redirect thread-based control methods to the underlying thread that
13
19
  # runs the async operations
@@ -22,10 +28,14 @@ module Karafka
22
28
 
23
29
  # Runs the `#call` method in a new thread
24
30
  def async_call
25
- @thread = Thread.new do
26
- Thread.current.abort_on_exception = true
31
+ MUTEX.synchronize do
32
+ return if @thread&.alive?
33
+
34
+ @thread = Thread.new do
35
+ Thread.current.abort_on_exception = true
27
36
 
28
- call
37
+ call
38
+ end
29
39
  end
30
40
  end
31
41
  end
@@ -18,6 +18,10 @@ module Karafka
18
18
  workers = Processing::WorkersBatch.new(jobs_queue)
19
19
  listeners = Connection::ListenersBatch.new(jobs_queue)
20
20
 
21
+ # We mark it prior to delegating to the manager as manager will have to start at least one
22
+ # connection to Kafka, hence running
23
+ Karafka::App.run!
24
+
21
25
  # Register all the listeners so they can be started and managed
22
26
  @manager.register(listeners)
23
27
 
@@ -61,10 +61,9 @@ module Karafka
61
61
  end
62
62
 
63
63
  # Starts Karafka with a supervision
64
- # @note We don't need to sleep because Karafka::Fetcher is locking and waiting to
65
- # finish loop (and it won't happen until we explicitly want to stop)
64
+ # @note We don't need to sleep because Karafka::Runner is locking and waiting to finish loop
65
+ # (and it won't happen until we explicitly want to stop)
66
66
  def start
67
- Karafka::App.run!
68
67
  Karafka::Runner.new.call
69
68
  end
70
69
 
@@ -73,5 +73,3 @@ end
73
73
  # Visit the setup documentation to get started and enhance your experience.
74
74
  #
75
75
  # https://karafka.io/docs/Web-UI-Getting-Started
76
- #
77
- # Karafka::Web.enable!
@@ -3,5 +3,5 @@
3
3
  # Main module namespace
4
4
  module Karafka
5
5
  # Current Karafka version
6
- VERSION = '2.3.0'
6
+ VERSION = '2.3.1'
7
7
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -35,7 +35,7 @@ cert_chain:
35
35
  AnG1dJU+yL2BK7vaVytLTstJME5mepSZ46qqIJXMuWob/YPDmVaBF39TDSG9e34s
36
36
  msG3BiCqgOgHAnL23+CN3Rt8MsuRfEtoTKpJVcCfoEoNHOkc
37
37
  -----END CERTIFICATE-----
38
- date: 2024-01-26 00:00:00.000000000 Z
38
+ date: 2024-02-09 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: karafka-core
metadata.gz.sig CHANGED
Binary file