Fix exception handling in Gitaly autodetection

In SELinux, the file cannot be written, and `Errno::EACCES`, not
`Errno::ACCESS` is thrown.

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/65328
This commit is contained in:
Stan Hu 2019-07-30 06:20:27 -07:00
parent 11f82c891a
commit 3b76d2982f
3 changed files with 16 additions and 1 deletions

View File

@ -0,0 +1,5 @@
---
title: Fix exception handling in Gitaly autodetection
merge_request: 31285
author:
type: fixed

View File

@ -413,7 +413,7 @@ module Gitlab
metadata_file = File.read(storage_metadata_file_path(storage))
metadata_hash = JSON.parse(metadata_file)
metadata_hash['gitaly_filesystem_id']
rescue Errno::ENOENT, Errno::ACCESS, JSON::ParserError
rescue Errno::ENOENT, Errno::EACCES, JSON::ParserError
nil
end

View File

@ -17,6 +17,16 @@ describe Gitlab::GitalyClient do
})
end
describe '.filesystem_id_from_disk' do
it 'catches errors' do
[Errno::ENOENT, Errno::EACCES, JSON::ParserError].each do |error|
allow(File).to receive(:read).with(described_class.storage_metadata_file_path('default')).and_raise(error)
expect(described_class.filesystem_id_from_disk('default')).to be_nil
end
end
end
describe '.stub_class' do
it 'returns the gRPC health check stub' do
expect(described_class.stub_class(:health_check)).to eq(::Grpc::Health::V1::Health::Stub)