Skip to content

Commit b719540

Browse files
committed
[CLIENT] Surface deprecation headers from Elasticsearch
1 parent c14fc36 commit b719540

File tree

2 files changed

+32
-0
lines changed
  • elasticsearch-transport

2 files changed

+32
-0
lines changed

elasticsearch-transport/lib/elasticsearch/transport/transport/base.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,8 @@ def perform_request(method, path, params={}, body=nil, headers=nil, opts={}, &bl
355355

356356
__trace method, path, params, connection.connection.headers, body, url, response, nil, 'N/A', duration if tracer
357357

358+
warnings(response.headers['warning']) if response.headers&.[]('warning')
359+
358360
Response.new response.status, json || response.body, response.headers
359361
ensure
360362
@last_request_at = Time.now
@@ -428,6 +430,10 @@ def user_agent_header(client)
428430
"elasticsearch-ruby/#{VERSION} (#{meta.join('; ')})"
429431
end
430432
end
433+
434+
def warnings(warning)
435+
warn("warning: #{warning}")
436+
end
431437
end
432438
end
433439
end

elasticsearch-transport/spec/elasticsearch/transport/client_spec.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,6 +1147,32 @@
11471147
end
11481148
end
11491149

1150+
context 'when Elasticsearch response includes a warning header' do
1151+
let(:client) do
1152+
Elasticsearch::Transport::Client.new(hosts: hosts)
1153+
end
1154+
1155+
let(:warning) { 'Elasticsearch warning: "deprecation warning"' }
1156+
1157+
it 'prints a warning' do
1158+
allow_any_instance_of(Elasticsearch::Transport::Transport::Response).to receive(:headers) do
1159+
{ 'warning' => warning }
1160+
end
1161+
1162+
begin
1163+
stderr = $stderr
1164+
fake_stderr = StringIO.new
1165+
$stderr = fake_stderr
1166+
1167+
client.perform_request('GET', '/')
1168+
fake_stderr.rewind
1169+
expect(fake_stderr.string).to eq("warning: #{warning}\n")
1170+
ensure
1171+
$stderr = stderr
1172+
end
1173+
end
1174+
end
1175+
11501176
context 'when a header is set on an endpoint request' do
11511177
let(:client) { described_class.new(host: hosts) }
11521178
let(:headers) { { 'user-agent' => 'my ruby app' } }

0 commit comments

Comments
 (0)