karafka-core 2.0.5 → 2.0.7

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