deimos-ruby 1.23.2 → 1.24.0

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