karafka-core 2.0.5 → 2.0.7

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: 9e11bdb1c5a745e22d10b63dff4b2fb0a7a30dd1812aa8f7d3ad555d061dd451
4
- data.tar.gz: 27d163cb019a0b57109bb4e6d53f3adce889a1d315f708f4100ffcee4d4885f8
3
+ metadata.gz: 158fcf590bf58fc10f8c47c5f9b9e8a256db4df8bfa842780cd20b6859c82392
4
+ data.tar.gz: 33025b3aaae92b63dffd21bf1820937d768cae4f8103701c963903e2add50fa6
5
5
  SHA512:
6
- metadata.gz: d838c690a75dd37b1a15b666df8eafbe38c5f8cd95a38db9d7350a0753220b1c168d9ab153284b2dc5947d920ea26b0056871879cb2ca8bc8fba65f09920304b
7
- data.tar.gz: ec6a1bd9ba1734975d8bafb0d57009e87101de8821caf96d30aa14e358169c0042f9744e7b1db951da959d7bcae19e4a202ad6c2f997bf5e40d6a7cceb1f75c1
6
+ metadata.gz: ebd3106bfe9f3ee67c1fca1ed6c871a2b7d18d03bb6a1dd9be4922777cb0bed1362047550a1a146491e9402fd9da61d6a37baf6aef99d6e303410702e7cedb3b
7
+ data.tar.gz: 89fab64ee5a909d0e05fbf179b690cc4fa75153d13cdbfe06e22d8b2d66b11fe4484641897ce95cb1a21e48e05746e29313a0d4157cc0a38d5dbe169d21ecc7f
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Karafka core changelog
2
2
 
3
+ ## 2.0.7 (2022-12-18)
4
+ - Allow for recompilation of config upon injecting new config nodes.
5
+ - Compile given config scope automatically after it is defined.
6
+ - Support sub-config merging via their nested definitions.
7
+
8
+ ## 2.0.6 (2022-12-07)
9
+ - Reverse node compilation state tracking removal.
10
+
3
11
  ## 2.0.5 (2022-12-07)
4
12
  - Move `librdkafka` generic (producer and consumer) patches from WaterDrop here.
5
13
  - Move dependency on `librdkafka` here from both Karafka and WaterDrop to unify management.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka-core (2.0.5)
4
+ karafka-core (2.0.7)
5
5
  concurrent-ruby (>= 1.1)
6
6
  rdkafka (>= 0.12)
7
7
 
@@ -4,7 +4,12 @@ module Karafka
4
4
  module Core
5
5
  module Configurable
6
6
  # Single end config value representation
7
- Leaf = Struct.new(:name, :default, :constructor)
7
+ Leaf = Struct.new(:name, :default, :constructor, :compiled) do
8
+ # @return [Boolean] true if already compiled
9
+ def compiled?
10
+ compiled
11
+ end
12
+ end
8
13
  end
9
14
  end
10
15
  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
 
@@ -34,8 +35,10 @@ module Karafka
34
35
  @children << if block
35
36
  Node.new(name, block)
36
37
  else
37
- Leaf.new(name, default, constructor)
38
+ Leaf.new(name, default, constructor, false)
38
39
  end
40
+
41
+ compile
39
42
  end
40
43
 
41
44
  # Allows for the configuration and setup of the settings
@@ -43,7 +46,7 @@ module Karafka
43
46
  # Compile settings, allow for overrides via yielding
44
47
  # @return [Node] returns self after configuration
45
48
  def configure
46
- compile
49
+ compile if !@compiled || name == :root
47
50
  yield(self) if block_given?
48
51
  self
49
52
  end
@@ -54,7 +57,10 @@ module Karafka
54
57
 
55
58
  @children.each do |value|
56
59
  config[value.name] = if value.is_a?(Leaf)
57
- public_send(value.name)
60
+ result = public_send(value.name)
61
+ # We need to check if value is not a result node for cases where
62
+ # we merge additional config
63
+ result.is_a?(Node) ? result.to_h : result
58
64
  else
59
65
  value.to_h
60
66
  end
@@ -70,7 +76,14 @@ module Karafka
70
76
  dupped = Node.new(name, nestings)
71
77
 
72
78
  dupped.children += children.map do |value|
73
- value.is_a?(Leaf) ? value.dup : value.deep_dup
79
+ if value.is_a?(Leaf)
80
+ # After inheritance we need to reload the state so the leafs are recompiled again
81
+ value = value.dup
82
+ value.compiled = false
83
+ value
84
+ else
85
+ value.deep_dup
86
+ end
74
87
  end
75
88
 
76
89
  dupped
@@ -89,6 +102,9 @@ module Karafka
89
102
  next if skippable
90
103
 
91
104
  initialized = if value.is_a?(Leaf)
105
+ next if value.compiled?
106
+
107
+ value.compiled = true
92
108
  value.constructor ? value.constructor.call(value.default) : value.default
93
109
  else
94
110
  value.compile
@@ -97,6 +113,8 @@ module Karafka
97
113
 
98
114
  public_send("#{value.name}=", initialized)
99
115
  end
116
+
117
+ @compiled = true
100
118
  end
101
119
  end
102
120
  end
@@ -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.5'
7
+ VERSION = '2.0.7'
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.5
4
+ version: 2.0.7
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-12-07 00:00:00.000000000 Z
38
+ date: 2022-12-18 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: concurrent-ruby
metadata.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- '��yo���sSE��CiہJ�!H��1O�:�u�š �?4���Xt�x��J�۝Tm���,����e�� @�Kߎ��_(�+ˋ��Żgl��Ū�-�8�>I.��p����aj�����k�Q�P)Zȍ'�%��
2
- ��7q���� �=i=����p $�T�����;%4o5�"��������\Y~'-�:�?��"֓Hut�>+�D�����T����T=�����LB �r��I�}���&t��\���Q����?-�W�G�iWǨ*@D��c�{��n�f�����u���zČ�'�ua�CwA���
1
+ �#f�餐Ѡ^�N���-Xhˬ�tn���9_�Y뾁����,CiЛ"{���SI,F�=ã�lZw���*� YKj�i���rz�3����ϝG;D���᪯�����7������-V;<%���\&��vJ5>�{���s*v�}�-���Rb�&ۇ�x��.5`��^�v��,��E9�X��˞����.� ����}ǿ-5�� �HI˒�2���_�*Ia��$�*�a��
2
+ 2
3
+ 6�$6��7[z7�%؍9�Ts���x�=;ïҧo��[���A�|x',�J���R��)Z�\l�����挏B?푹�z�������m�i
4
+ ���J]L��o(Ms��4zɜ�]B>�W�N'���]d��Q�Z