Skip to content

Commit 483059e

Browse files
yaauiejsvd
andauthored
geoip: avoid crash cleaning non-existing managed dbs (elastic#15986)
* geoip: avoid crash cleaning non-existing managed dbs * Update x-pack/spec/geoip_database_management/manager_spec.rb Co-authored-by: João Duarte <[email protected]> --------- Co-authored-by: João Duarte <[email protected]>
1 parent c0c213d commit 483059e

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

x-pack/lib/geoip_database_management/manager.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,13 @@ def initialize
5959
@metadata = Metadata.new(data_path)
6060

6161
unless enabled?
62-
logger.info("database manager is disabled; removing managed databases from disk``")
63-
metadata.delete
64-
clean_up_database
62+
if @metadata.exist?
63+
logger.info("database manager is disabled; removing managed databases from disk``")
64+
metadata.delete
65+
clean_up_database
66+
else
67+
logger.info("database manager is disabled.")
68+
end
6569
end
6670
end
6771

@@ -142,6 +146,8 @@ def periodic_sync
142146
end
143147

144148
def clean_up_database(excluded_dirnames = [])
149+
return unless ::Dir.exist?(data_path.root)
150+
145151
protected_dirnames = excluded_dirnames.uniq
146152
existing_dirnames = ::Dir.children(data_path.root)
147153
.select { |f| ::File.directory? ::File.join(data_path.root, f) }

x-pack/spec/geoip_database_management/manager_spec.rb

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,13 @@ def write_dummy_mmdb(type, path)
3737
let(:geoip_data_path) { ::File.expand_path("geoip_database_management", settings_path_data)}
3838
let(:geoip_metadata_path) { ::File.expand_path("metadata.csv", geoip_data_path) }
3939

40+
let(:populate_geoip_data_path) { true }
4041
let(:metadata_contents) { nil }
4142
before(:each) do
42-
::FileUtils.mkdir_p(::File.dirname(geoip_metadata_path))
43-
::File.write(geoip_metadata_path, metadata_contents) unless metadata_contents.nil?
43+
if populate_geoip_data_path
44+
::FileUtils.mkdir_p(::File.dirname(geoip_metadata_path))
45+
::File.write(geoip_metadata_path, metadata_contents) unless metadata_contents.nil?
46+
end
4447
end
4548

4649
after(:each) do
@@ -106,6 +109,18 @@ def write_dummy_mmdb(type, path)
106109
expect(Pathname(existing_city_db_path)).to_not be_file
107110
expect(Pathname(existing_asn_db_path)).to_not be_file
108111
end
112+
113+
context "and data directory does not exist" do
114+
let(:populate_geoip_data_path) { false }
115+
let(:existing_city_db_path) { nil }
116+
let(:existing_asn_db_path) { nil }
117+
118+
it 'logs info about database manager being disabled' do
119+
manager_instance # instantiate
120+
121+
expect(mock_logger).to have_received(:info).with(a_string_including "database manager is disabled")
122+
end
123+
end
109124
end
110125
end
111126

0 commit comments

Comments
 (0)