Merge pull request #15181 from martijnvg/ingest_geoip_only_read_mmdb_files
[Ingest] The geoip processor should only try to read *.mmdb files from the geoip config directory
This commit is contained in:
commit
ffa8998f36
|
@ -35,15 +35,12 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.*;
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.nio.file.StandardOpenOption;
|
|
||||||
import java.security.AccessController;
|
import java.security.AccessController;
|
||||||
import java.security.PrivilegedAction;
|
import java.security.PrivilegedAction;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.elasticsearch.ingest.processor.ConfigurationUtils.readList;
|
|
||||||
import static org.elasticsearch.ingest.processor.ConfigurationUtils.readOptionalList;
|
import static org.elasticsearch.ingest.processor.ConfigurationUtils.readOptionalList;
|
||||||
import static org.elasticsearch.ingest.processor.ConfigurationUtils.readStringProperty;
|
import static org.elasticsearch.ingest.processor.ConfigurationUtils.readStringProperty;
|
||||||
|
|
||||||
|
@ -231,11 +228,12 @@ public final class GeoIpProcessor implements Processor {
|
||||||
|
|
||||||
try (Stream<Path> databaseFiles = Files.list(geoIpConfigDirectory)) {
|
try (Stream<Path> databaseFiles = Files.list(geoIpConfigDirectory)) {
|
||||||
Map<String, DatabaseReader> databaseReaders = new HashMap<>();
|
Map<String, DatabaseReader> databaseReaders = new HashMap<>();
|
||||||
|
PathMatcher pathMatcher = geoIpConfigDirectory.getFileSystem().getPathMatcher("glob:**.mmdb");
|
||||||
// Use iterator instead of forEach otherwise IOException needs to be caught twice...
|
// Use iterator instead of forEach otherwise IOException needs to be caught twice...
|
||||||
Iterator<Path> iterator = databaseFiles.iterator();
|
Iterator<Path> iterator = databaseFiles.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
Path databasePath = iterator.next();
|
Path databasePath = iterator.next();
|
||||||
if (Files.isRegularFile(databasePath)) {
|
if (Files.isRegularFile(databasePath) && pathMatcher.matches(databasePath)) {
|
||||||
try (InputStream inputStream = Files.newInputStream(databasePath, StandardOpenOption.READ)) {
|
try (InputStream inputStream = Files.newInputStream(databasePath, StandardOpenOption.READ)) {
|
||||||
databaseReaders.put(databasePath.getFileName().toString(), new DatabaseReader.Builder(inputStream).build());
|
databaseReaders.put(databasePath.getFileName().toString(), new DatabaseReader.Builder(inputStream).build());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue