karafka-core 2.0.3 → 2.0.4

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: 0a51b03ca1db01c6913a449e8d24f0f6c46a29ceddd262b33999a368425bc44b
4
- data.tar.gz: d56de0a9d7f23ffbf1559659ff98fe45053ffeee3b0204513fc56c07245fe0c6
3
+ metadata.gz: eb55ae933175f1fc17993fb6bb1e980a7a3494814ceb6ff0b88e3b5b069af2f5
4
+ data.tar.gz: af485691da69a93ad270db1d864aac83abe5f84de6e234a51888c7a6488503bb
5
5
  SHA512:
6
- metadata.gz: 3d8b26837986d4437489576cfb779d4c27c7db3a2d4930849686bcf252964d2a2f02614591120dd3446950aa80f57a7e5464ee68321b13805aaa7a534a16156e
7
- data.tar.gz: 9986d8319b6e881fce6bf91aee9ec086a5b0b57baf8855e52e3dc5db49141212b5e6c71bae394d87e85d6d384b660cd1a082cc73160282b132d89ad8f572c24c
6
+ metadata.gz: 2c6504961821ce9d3cc68d552a1b010a4c102a3d17570d6f950b541ebf48740df66a50b55ff2cfd1f086ebbf62f2bd0e7b3742a37ca1648c9acacfae0a439192
7
+ data.tar.gz: 641d243fbcf7ae79a34dcbfd1f1e66499d9bf3db4b8e6ec4a401844b0a4bc95e10a82fba45e2f94b39d082c29f17e9f786b1f6b4b4af1781ea01d5264ae949dc
checksums.yaml.gz.sig CHANGED
Binary file
@@ -0,0 +1 @@
1
+ custom: ['https://karafka.io/#become-pro']
@@ -23,7 +23,7 @@ jobs:
23
23
  - ruby: '3.1'
24
24
  coverage: 'true'
25
25
  steps:
26
- - uses: actions/checkout@v2
26
+ - uses: actions/checkout@v3
27
27
  - name: Install package dependencies
28
28
  run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
29
29
  - name: Set up Ruby
@@ -48,7 +48,7 @@ jobs:
48
48
  strategy:
49
49
  fail-fast: false
50
50
  steps:
51
- - uses: actions/checkout@v2
51
+ - uses: actions/checkout@v3
52
52
  with:
53
53
  fetch-depth: 0
54
54
  - name: Set up Ruby
@@ -67,7 +67,7 @@ jobs:
67
67
  strategy:
68
68
  fail-fast: false
69
69
  steps:
70
- - uses: actions/checkout@v2
70
+ - uses: actions/checkout@v3
71
71
  with:
72
72
  fetch-depth: 0
73
73
  - name: Run Coditsu
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Karafka core changelog
2
2
 
3
+ # 2.0.4 (2022-11-20)
4
+ - Disallow publishing events that were not registered.
5
+ - Fix a potential race condition when adding listeners concurrently from multiple threads.
6
+
3
7
  ## 2.0.3 (2022-10-13)
4
8
  - Maintenance release. Cert chain update. No code changes.
5
9
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka-core (2.0.3)
4
+ karafka-core (2.0.4)
5
5
  concurrent-ruby (>= 1.1)
6
6
 
7
7
  GEM
@@ -21,19 +21,19 @@ GEM
21
21
  i18n (1.12.0)
22
22
  concurrent-ruby (~> 1.0)
23
23
  minitest (5.16.3)
24
- rspec (3.11.0)
25
- rspec-core (~> 3.11.0)
26
- rspec-expectations (~> 3.11.0)
27
- rspec-mocks (~> 3.11.0)
28
- rspec-core (3.11.0)
29
- rspec-support (~> 3.11.0)
30
- rspec-expectations (3.11.1)
24
+ rspec (3.12.0)
25
+ rspec-core (~> 3.12.0)
26
+ rspec-expectations (~> 3.12.0)
27
+ rspec-mocks (~> 3.12.0)
28
+ rspec-core (3.12.0)
29
+ rspec-support (~> 3.12.0)
30
+ rspec-expectations (3.12.0)
31
31
  diff-lcs (>= 1.2.0, < 2.0)
32
- rspec-support (~> 3.11.0)
33
- rspec-mocks (3.11.1)
32
+ rspec-support (~> 3.12.0)
33
+ rspec-mocks (3.12.0)
34
34
  diff-lcs (>= 1.2.0, < 2.0)
35
- rspec-support (~> 3.11.0)
36
- rspec-support (3.11.1)
35
+ rspec-support (~> 3.12.0)
36
+ rspec-support (3.12.0)
37
37
  simplecov (0.21.2)
38
38
  docile (~> 1.1)
39
39
  simplecov-html (~> 0.11)
@@ -55,4 +55,4 @@ DEPENDENCIES
55
55
  simplecov
56
56
 
57
57
  BUNDLED WITH
58
- 2.3.22
58
+ 2.3.24
data/karafka-core.gemspec CHANGED
@@ -28,7 +28,12 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = %w[lib]
29
29
 
30
30
  spec.metadata = {
31
+ 'funding_uri' => 'https://karafka.io/#become-pro',
32
+ 'homepage_uri' => 'https://karafka.io',
33
+ 'changelog_uri' => 'https://github.com/karafka/karafka-core/blob/master/CHANGELOG.md',
34
+ 'bug_tracker_uri' => 'https://github.com/karafka/karafka-core/issues',
31
35
  'source_code_uri' => 'https://github.com/karafka/karafka-core',
36
+ 'documentation_uri' => 'https://karafka.io/docs',
32
37
  'rubygems_mfa_required' => 'true'
33
38
  }
34
39
  end
@@ -21,6 +21,7 @@ module Karafka
21
21
  @name = name
22
22
  @children = []
23
23
  @nestings = nestings
24
+ @compiled = false
24
25
  instance_eval(&nestings)
25
26
  end
26
27
 
@@ -43,7 +44,7 @@ module Karafka
43
44
  # Compile settings, allow for overrides via yielding
44
45
  # @return [Node] returns self after configuration
45
46
  def configure
46
- compile
47
+ compile unless @compiled
47
48
  yield(self) if block_given?
48
49
  self
49
50
  end
@@ -97,6 +98,8 @@ module Karafka
97
98
 
98
99
  public_send("#{value.name}=", initialized)
99
100
  end
101
+
102
+ @compiled = true
100
103
  end
101
104
  end
102
105
  end
@@ -20,14 +20,17 @@ module Karafka
20
20
  private_constant :EMPTY_HASH
21
21
 
22
22
  def initialize
23
- @listeners = Concurrent::Map.new { |k, v| k[v] = Concurrent::Array.new }
23
+ @listeners = Concurrent::Map.new do |k, v|
24
+ k.compute_if_absent(v) { Concurrent::Array.new }
25
+ end
26
+
24
27
  # This allows us to optimize the method calling lookups
25
28
  @events_methods_map = Concurrent::Map.new
26
29
  end
27
30
 
28
31
  # Registers a new event on which we can publish
29
32
  #
30
- # @param event_id [String, Symbol] event id
33
+ # @param event_id [String] event id
31
34
  def register_event(event_id)
32
35
  @listeners[event_id]
33
36
  @events_methods_map[event_id] = :"on_#{event_id.to_s.tr('.', '_')}"
@@ -73,7 +76,7 @@ module Karafka
73
76
  # Allows for code instrumentation
74
77
  # Runs the provided code and sends the instrumentation details to all registered listeners
75
78
  #
76
- # @param event_id [String, Symbol] id of the event
79
+ # @param event_id [String] id of the event
77
80
  # @param payload [Hash] payload for the instrumentation
78
81
  # @param block [Proc] instrumented code
79
82
  # @return [Object] whatever the provided block (if any) returns
@@ -83,6 +86,9 @@ module Karafka
83
86
  # sleep(1)
84
87
  # end
85
88
  def instrument(event_id, payload = EMPTY_HASH, &block)
89
+ # Allow for instrumentation of only events we registered
90
+ raise EventNotRegistered, event_id unless @listeners.key?(event_id)
91
+
86
92
  result, time = measure_time_taken(&block) if block_given?
87
93
 
88
94
  event = Event.new(
@@ -4,6 +4,6 @@ module Karafka
4
4
  module Core
5
5
  # Current Karafka::Core version
6
6
  # We follow the versioning schema of given Karafka version
7
- VERSION = '2.0.3'
7
+ VERSION = '2.0.4'
8
8
  end
9
9
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -35,7 +35,7 @@ cert_chain:
35
35
  Qf04B9ceLUaC4fPVEz10FyobjaFoY4i32xRto3XnrzeAgfEe4swLq8bQsR3w/EF3
36
36
  MGU0FeSV2Yj7Xc2x/7BzLK8xQn5l7Yy75iPF+KP3vVmDHnNl
37
37
  -----END CERTIFICATE-----
38
- date: 2022-10-13 00:00:00.000000000 Z
38
+ date: 2022-11-20 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: concurrent-ruby
@@ -61,6 +61,7 @@ files:
61
61
  - ".coditsu/ci.yml"
62
62
  - ".console_irbrc"
63
63
  - ".diffend.yml"
64
+ - ".github/FUNDING.yml"
64
65
  - ".github/ISSUE_TEMPLATE/bug_report.md"
65
66
  - ".github/ISSUE_TEMPLATE/feature_request.md"
66
67
  - ".github/workflows/ci.yml"
@@ -97,7 +98,12 @@ homepage: https://karafka.io
97
98
  licenses:
98
99
  - MIT
99
100
  metadata:
101
+ funding_uri: https://karafka.io/#become-pro
102
+ homepage_uri: https://karafka.io
103
+ changelog_uri: https://github.com/karafka/karafka-core/blob/master/CHANGELOG.md
104
+ bug_tracker_uri: https://github.com/karafka/karafka-core/issues
100
105
  source_code_uri: https://github.com/karafka/karafka-core
106
+ documentation_uri: https://karafka.io/docs
101
107
  rubygems_mfa_required: 'true'
102
108
  post_install_message:
103
109
  rdoc_options: []
metadata.gz.sig CHANGED
Binary file