|
80 | 80 | dalli.set('foo', 'bar') |
81 | 81 | exporter.reset |
82 | 82 |
|
83 | | - dalli.instance_variable_get(:@ring).servers.first.stub(:write, ->(_bytes) { raise Dalli::DalliError }) do |
| 83 | + dalli.instance_variable_get(:@ring).servers.first.stub(:write, ->(_bytes) { raise Dalli::NetworkError }) do |
84 | 84 | dalli.get_multi('foo', 'bar') |
85 | 85 | end |
86 | 86 |
|
87 | | - _(exporter.finished_spans.size).must_equal 1 |
| 87 | + if supports_retry_on_network_errors? |
| 88 | + _(exporter.finished_spans.size).must_equal 2 |
| 89 | + else |
| 90 | + _(exporter.finished_spans.size).must_equal 1 |
| 91 | + end |
| 92 | + |
88 | 93 | _(span.name).must_equal 'getkq' |
89 | 94 | _(span.attributes['db.system']).must_equal 'memcached' |
90 | 95 | _(span.attributes['db.statement']).must_equal 'getkq foo bar' |
|
93 | 98 |
|
94 | 99 | span_event = span.events.first |
95 | 100 | _(span_event.name).must_equal 'exception' |
96 | | - _(span_event.attributes['exception.type']).must_equal 'Dalli::DalliError' |
97 | | - _(span_event.attributes['exception.message']).must_equal 'Dalli::DalliError' |
| 101 | + _(span_event.attributes['exception.type']).must_equal 'Dalli::NetworkError' |
| 102 | + _(span_event.attributes['exception.message']).must_equal 'Dalli::NetworkError' |
98 | 103 | end |
99 | 104 |
|
100 | 105 | it 'omits db.statement' do |
|
119 | 124 | _(span.attributes['db.statement']).must_equal 'set ?' |
120 | 125 | end |
121 | 126 | end |
| 127 | + |
| 128 | + # Dalli 3.x has different behavior than 2.x versions and attempts to retry on network errors |
| 129 | + # https://github.com/petergoldstein/dalli/pull/754 |
| 130 | + def supports_retry_on_network_errors? |
| 131 | + Gem.loaded_specs['dalli'].version >= Gem::Version.new('3.0.0') |
| 132 | + end |
122 | 133 | end unless ENV['OMIT_SERVICES'] |
0 commit comments