deimos-ruby 1.23.2 → 1.24.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/docs/CONFIGURATION.md +2 -1
  4. data/lib/deimos/config/configuration.rb +10 -1
  5. data/lib/deimos/instrumentation.rb +27 -22
  6. data/lib/deimos/utils/db_poller/base.rb +23 -0
  7. data/lib/deimos/utils/schema_class.rb +18 -3
  8. data/lib/deimos/version.rb +1 -1
  9. data/lib/generators/deimos/schema_class_generator.rb +9 -2
  10. data/regenerate_test_schema_classes.rb +13 -2
  11. data/spec/active_record_batch_consumer_spec.rb +1 -1
  12. data/spec/active_record_consumer_spec.rb +1 -1
  13. data/spec/active_record_producer_spec.rb +1 -1
  14. data/spec/batch_consumer_spec.rb +1 -1
  15. data/spec/consumer_spec.rb +2 -2
  16. data/spec/generators/schema_class_generator_spec.rb +18 -1
  17. data/spec/schemas/com/my-namespace/my-suborg/MyLongNamespaceSchema.avsc +18 -0
  18. data/spec/schemas/my_namespace/generated.rb +1 -1
  19. data/spec/schemas/my_namespace/my_long_namespace_schema.rb +48 -0
  20. data/spec/schemas/my_namespace/my_nested_schema.rb +1 -1
  21. data/spec/schemas/my_namespace/my_schema.rb +1 -1
  22. data/spec/schemas/my_namespace/my_schema_with_circular_reference.rb +1 -1
  23. data/spec/schemas/my_namespace/my_schema_with_complex_type.rb +2 -2
  24. data/spec/schemas/my_namespace/my_updated_schema.rb +2 -1
  25. data/spec/schemas/{request → my_namespace/request}/create_topic.rb +2 -2
  26. data/spec/schemas/{request → my_namespace/request}/index.rb +2 -2
  27. data/spec/schemas/{request → my_namespace/request}/update_request.rb +2 -2
  28. data/spec/schemas/{response → my_namespace/response}/create_topic.rb +2 -2
  29. data/spec/schemas/{response → my_namespace/response}/index.rb +2 -2
  30. data/spec/schemas/{response → my_namespace/response}/update_response.rb +2 -2
  31. data/spec/snapshots/consumers-no-nest.snap +44 -0
  32. data/spec/snapshots/consumers.snap +44 -0
  33. data/spec/snapshots/consumers_and_producers-no-nest.snap +44 -0
  34. data/spec/snapshots/consumers_and_producers.snap +44 -0
  35. data/spec/snapshots/consumers_circular-no-nest.snap +44 -0
  36. data/spec/snapshots/consumers_circular.snap +44 -0
  37. data/spec/snapshots/consumers_complex_types-no-nest.snap +44 -0
  38. data/spec/snapshots/consumers_complex_types.snap +44 -0
  39. data/spec/snapshots/consumers_nested-no-nest.snap +44 -0
  40. data/spec/snapshots/consumers_nested.snap +44 -0
  41. data/spec/snapshots/namespace_folders.snap +254 -210
  42. data/spec/snapshots/namespace_map.snap +1450 -0
  43. data/spec/snapshots/producers_with_key-no-nest.snap +44 -0
  44. data/spec/snapshots/producers_with_key.snap +44 -0
  45. data/spec/utils/db_poller_spec.rb +42 -0
  46. metadata +20 -14
@@ -260,6 +260,50 @@ module Schemas
260
260
  end
261
261
 
262
262
 
263
+ spec/app/lib/schema_classes/my_long_namespace_schema.rb:
264
+ # frozen_string_literal: true
265
+
266
+ # This file is autogenerated by Deimos, Do NOT modify
267
+ module Schemas
268
+ ### Primary Schema Class ###
269
+ # Autogenerated Schema for Record at com.my-namespace.my-suborg.MyLongNamespaceSchema
270
+ class MyLongNamespaceSchema < Deimos::SchemaClass::Record
271
+
272
+ ### Attribute Accessors ###
273
+ # @return [String]
274
+ attr_accessor :test_id
275
+ # @return [Integer]
276
+ attr_accessor :some_int
277
+
278
+ # @override
279
+ def initialize(test_id: nil,
280
+ some_int: nil)
281
+ super
282
+ self.test_id = test_id
283
+ self.some_int = some_int
284
+ end
285
+
286
+ # @override
287
+ def schema
288
+ 'MyLongNamespaceSchema'
289
+ end
290
+
291
+ # @override
292
+ def namespace
293
+ 'com.my-namespace.my-suborg'
294
+ end
295
+
296
+ # @override
297
+ def as_json(_opts={})
298
+ {
299
+ 'test_id' => @test_id,
300
+ 'some_int' => @some_int
301
+ }
302
+ end
303
+ end
304
+ end
305
+
306
+
263
307
  spec/app/lib/schema_classes/my_nested_record.rb:
264
308
  # frozen_string_literal: true
265
309
 
@@ -227,6 +227,50 @@ module Schemas
227
227
  end
228
228
 
229
229
 
230
+ spec/app/lib/schema_classes/my_long_namespace_schema.rb:
231
+ # frozen_string_literal: true
232
+
233
+ # This file is autogenerated by Deimos, Do NOT modify
234
+ module Schemas
235
+ ### Primary Schema Class ###
236
+ # Autogenerated Schema for Record at com.my-namespace.my-suborg.MyLongNamespaceSchema
237
+ class MyLongNamespaceSchema < Deimos::SchemaClass::Record
238
+
239
+ ### Attribute Accessors ###
240
+ # @return [String]
241
+ attr_accessor :test_id
242
+ # @return [Integer]
243
+ attr_accessor :some_int
244
+
245
+ # @override
246
+ def initialize(test_id: nil,
247
+ some_int: nil)
248
+ super
249
+ self.test_id = test_id
250
+ self.some_int = some_int
251
+ end
252
+
253
+ # @override
254
+ def schema
255
+ 'MyLongNamespaceSchema'
256
+ end
257
+
258
+ # @override
259
+ def namespace
260
+ 'com.my-namespace.my-suborg'
261
+ end
262
+
263
+ # @override
264
+ def as_json(_opts={})
265
+ {
266
+ 'test_id' => @test_id,
267
+ 'some_int' => @some_int
268
+ }
269
+ end
270
+ end
271
+ end
272
+
273
+
230
274
  spec/app/lib/schema_classes/my_nested_schema.rb:
231
275
  # frozen_string_literal: true
232
276
 
@@ -191,6 +191,48 @@ each_db_config(Deimos::Utils::DbPoller::Base) do
191
191
  expect(Deimos.config.tracer).to have_received(:finish).with('a span')
192
192
  end
193
193
 
194
+ context 'with skip_too_large_messages on' do
195
+ before(:each) { config.skip_too_large_messages = true }
196
+
197
+ it 'should skip and move on' do
198
+ error = Kafka::MessageSizeTooLarge.new('OH NOES')
199
+ allow(poller).to receive(:sleep)
200
+ allow(poller).to receive(:process_batch) do
201
+ raise error
202
+ end
203
+ poller.retrieve_poll_info
204
+ poller.process_batch_with_span(widgets, status)
205
+ expect(poller).not_to have_received(:sleep)
206
+ expect(Deimos.config.tracer).to have_received(:set_error).with('a span', error)
207
+ expect(status.batches_errored).to eq(1)
208
+ expect(status.batches_processed).to eq(0)
209
+ expect(status.messages_processed).to eq(3)
210
+
211
+ end
212
+ end
213
+
214
+ context 'with skip_too_large_messages off' do
215
+ it 'should retry forever' do
216
+ called_once = false
217
+ allow(poller).to receive(:sleep)
218
+ allow(poller).to receive(:process_batch) do
219
+ unless called_once
220
+ called_once = true
221
+ raise Kafka::MessageSizeTooLarge, 'OH NOES'
222
+ end
223
+ end
224
+ poller.retrieve_poll_info
225
+ poller.process_batch_with_span(widgets, status)
226
+ expect(poller).to have_received(:sleep).once.with(0.5)
227
+ expect(Deimos.config.tracer).to have_received(:finish).with('a span')
228
+ expect(status.batches_errored).to eq(0)
229
+ expect(status.batches_processed).to eq(1)
230
+ expect(status.messages_processed).to eq(3)
231
+
232
+ end
233
+
234
+ end
235
+
194
236
  it 'should retry on Kafka error' do
195
237
  called_once = false
196
238
  allow(poller).to receive(:sleep)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deimos-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.23.2
4
+ version: 1.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-22 00:00:00.000000000 Z
11
+ date: 2024-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro_turf
@@ -561,6 +561,7 @@ files:
561
561
  - spec/schemas/com/my-namespace/Wibble.avsc
562
562
  - spec/schemas/com/my-namespace/Widget.avsc
563
563
  - spec/schemas/com/my-namespace/WidgetTheSecond.avsc
564
+ - spec/schemas/com/my-namespace/my-suborg/MyLongNamespaceSchema.avsc
564
565
  - spec/schemas/com/my-namespace/request/CreateTopic.avsc
565
566
  - spec/schemas/com/my-namespace/request/Index.avsc
566
567
  - spec/schemas/com/my-namespace/request/UpdateRequest.avsc
@@ -568,6 +569,7 @@ files:
568
569
  - spec/schemas/com/my-namespace/response/Index.avsc
569
570
  - spec/schemas/com/my-namespace/response/UpdateResponse.avsc
570
571
  - spec/schemas/my_namespace/generated.rb
572
+ - spec/schemas/my_namespace/my_long_namespace_schema.rb
571
573
  - spec/schemas/my_namespace/my_nested_schema.rb
572
574
  - spec/schemas/my_namespace/my_schema.rb
573
575
  - spec/schemas/my_namespace/my_schema_compound_key.rb
@@ -580,15 +582,15 @@ files:
580
582
  - spec/schemas/my_namespace/my_schema_with_id.rb
581
583
  - spec/schemas/my_namespace/my_schema_with_unique_id.rb
582
584
  - spec/schemas/my_namespace/my_updated_schema.rb
585
+ - spec/schemas/my_namespace/request/create_topic.rb
586
+ - spec/schemas/my_namespace/request/index.rb
587
+ - spec/schemas/my_namespace/request/update_request.rb
588
+ - spec/schemas/my_namespace/response/create_topic.rb
589
+ - spec/schemas/my_namespace/response/index.rb
590
+ - spec/schemas/my_namespace/response/update_response.rb
583
591
  - spec/schemas/my_namespace/wibble.rb
584
592
  - spec/schemas/my_namespace/widget.rb
585
593
  - spec/schemas/my_namespace/widget_the_second.rb
586
- - spec/schemas/request/create_topic.rb
587
- - spec/schemas/request/index.rb
588
- - spec/schemas/request/update_request.rb
589
- - spec/schemas/response/create_topic.rb
590
- - spec/schemas/response/index.rb
591
- - spec/schemas/response/update_response.rb
592
594
  - spec/snapshots/consumers-no-nest.snap
593
595
  - spec/snapshots/consumers.snap
594
596
  - spec/snapshots/consumers_and_producers-no-nest.snap
@@ -600,6 +602,7 @@ files:
600
602
  - spec/snapshots/consumers_nested-no-nest.snap
601
603
  - spec/snapshots/consumers_nested.snap
602
604
  - spec/snapshots/namespace_folders.snap
605
+ - spec/snapshots/namespace_map.snap
603
606
  - spec/snapshots/producers_with_key-no-nest.snap
604
607
  - spec/snapshots/producers_with_key.snap
605
608
  - spec/spec_helper.rb
@@ -689,6 +692,7 @@ test_files:
689
692
  - spec/schemas/com/my-namespace/Wibble.avsc
690
693
  - spec/schemas/com/my-namespace/Widget.avsc
691
694
  - spec/schemas/com/my-namespace/WidgetTheSecond.avsc
695
+ - spec/schemas/com/my-namespace/my-suborg/MyLongNamespaceSchema.avsc
692
696
  - spec/schemas/com/my-namespace/request/CreateTopic.avsc
693
697
  - spec/schemas/com/my-namespace/request/Index.avsc
694
698
  - spec/schemas/com/my-namespace/request/UpdateRequest.avsc
@@ -696,6 +700,7 @@ test_files:
696
700
  - spec/schemas/com/my-namespace/response/Index.avsc
697
701
  - spec/schemas/com/my-namespace/response/UpdateResponse.avsc
698
702
  - spec/schemas/my_namespace/generated.rb
703
+ - spec/schemas/my_namespace/my_long_namespace_schema.rb
699
704
  - spec/schemas/my_namespace/my_nested_schema.rb
700
705
  - spec/schemas/my_namespace/my_schema.rb
701
706
  - spec/schemas/my_namespace/my_schema_compound_key.rb
@@ -708,15 +713,15 @@ test_files:
708
713
  - spec/schemas/my_namespace/my_schema_with_id.rb
709
714
  - spec/schemas/my_namespace/my_schema_with_unique_id.rb
710
715
  - spec/schemas/my_namespace/my_updated_schema.rb
716
+ - spec/schemas/my_namespace/request/create_topic.rb
717
+ - spec/schemas/my_namespace/request/index.rb
718
+ - spec/schemas/my_namespace/request/update_request.rb
719
+ - spec/schemas/my_namespace/response/create_topic.rb
720
+ - spec/schemas/my_namespace/response/index.rb
721
+ - spec/schemas/my_namespace/response/update_response.rb
711
722
  - spec/schemas/my_namespace/wibble.rb
712
723
  - spec/schemas/my_namespace/widget.rb
713
724
  - spec/schemas/my_namespace/widget_the_second.rb
714
- - spec/schemas/request/create_topic.rb
715
- - spec/schemas/request/index.rb
716
- - spec/schemas/request/update_request.rb
717
- - spec/schemas/response/create_topic.rb
718
- - spec/schemas/response/index.rb
719
- - spec/schemas/response/update_response.rb
720
725
  - spec/snapshots/consumers-no-nest.snap
721
726
  - spec/snapshots/consumers.snap
722
727
  - spec/snapshots/consumers_and_producers-no-nest.snap
@@ -728,6 +733,7 @@ test_files:
728
733
  - spec/snapshots/consumers_nested-no-nest.snap
729
734
  - spec/snapshots/consumers_nested.snap
730
735
  - spec/snapshots/namespace_folders.snap
736
+ - spec/snapshots/namespace_map.snap
731
737
  - spec/snapshots/producers_with_key-no-nest.snap
732
738
  - spec/snapshots/producers_with_key.snap
733
739
  - spec/spec_helper.rb