karafka 2.3.0 → 2.3.1

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
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