Skip to content

Commit 53ded41

Browse files
committed
Use logstash-bridge GeoIP interfaces.
1 parent c2446a2 commit 53ded41

File tree

9 files changed

+25
-75
lines changed

9 files changed

+25
-75
lines changed

build.gradle

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,6 @@ task shadeElasticsearchIngestGeoIpModule(type: com.github.jengelman.gradle.plugi
307307

308308
mergeServiceFiles()
309309

310-
String shadeNamespace = "org.elasticsearch.ingest.geoip.shaded"
311-
relocate('com.fasterxml.jackson', "${shadeNamespace}.com.fasterxml.jackson")
312-
relocate('com.maxmind', "${shadeNamespace}.com.maxmind")
313-
314310
exclude '**/module-info.class'
315311
}
316312

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
LOGSTASH_PATH=../../logstash
22
ELASTICSEARCH_REPO=mashhurs/elasticsearch
3-
ELASTICSEARCH_TREEISH=move-to-bridge-stable-api-investigation
3+
ELASTICSEARCH_TREEISH=logstash-bridge-geoip-interfaces

src/main/java/co/elastic/logstash/filters/elasticintegration/geoip/ConstantIpDatabaseHolder.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package co.elastic.logstash.filters.elasticintegration.geoip;
22

3-
import org.elasticsearch.ingest.geoip.IpDatabase;
4-
53
import java.io.Closeable;
64
import java.io.IOException;
75
import java.util.Objects;

src/main/java/co/elastic/logstash/filters/elasticintegration/geoip/GeoIpProcessorFactory.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
*/
77
package co.elastic.logstash.filters.elasticintegration.geoip;
88

9-
import org.elasticsearch.ingest.geoip.GeoIpProcessor;
109
import org.elasticsearch.logstashbridge.ingest.ProcessorBridge;
10+
import org.elasticsearch.logstashbridge.geoip.GeoIpProcessorBridge;
1111

1212
import java.util.Map;
1313
import java.util.stream.Collectors;
@@ -24,8 +24,9 @@ public ProcessorBridge create(Map<String, ProcessorBridge.Factory> processorFact
2424
String tag,
2525
String description,
2626
Map<String, Object> config) throws Exception {
27-
return ProcessorBridge.fromInternal(new GeoIpProcessor.Factory("geoip", this.ipDatabaseProvider)
28-
.create(processorFactories.entrySet()
27+
return ProcessorBridge.fromInternal(
28+
new GeoIpProcessorBridge.Factory("geoip", this.ipDatabaseProvider.toInternal()).toInternal()
29+
.create(processorFactories.entrySet()
2930
.stream()
3031
.collect(Collectors.toMap(Map.Entry::getKey,e -> e.getValue().toInternal())),
3132
tag,

src/main/java/co/elastic/logstash/filters/elasticintegration/geoip/IpDatabaseAdapter.java

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,25 @@
88

99
import org.apache.logging.log4j.LogManager;
1010
import org.apache.logging.log4j.Logger;
11-
import org.elasticsearch.ExceptionsHelper;
12-
import org.elasticsearch.common.CheckedBiFunction;
13-
import org.elasticsearch.ingest.geoip.IpDatabase;
14-
import org.elasticsearch.ingest.geoip.shaded.com.maxmind.db.CHMCache;
15-
import org.elasticsearch.ingest.geoip.shaded.com.maxmind.db.NoCache;
16-
import org.elasticsearch.ingest.geoip.shaded.com.maxmind.db.NodeCache;
17-
import org.elasticsearch.ingest.geoip.shaded.com.maxmind.db.Reader;
11+
import org.elasticsearch.logstashbridge.geoip.IpDatabaseBridge;
12+
import org.elasticsearch.logstashbridge.geoip.MaxMindDbBridge;
1813

1914
import java.io.File;
2015
import java.io.IOException;
2116
import java.nio.file.Path;
2217
import java.util.Optional;
2318

24-
public class IpDatabaseAdapter implements IpDatabase {
19+
public class IpDatabaseAdapter extends IpDatabaseBridge.AbstractExternal {
2520
private static final Logger LOGGER = LogManager.getLogger(IpDatabaseAdapter.class);
2621

27-
private final Reader databaseReader;
22+
private final MaxMindDbBridge.Reader databaseReader;
2823
private final String databaseType;
2924

3025
private volatile boolean isReaderClosed = false;
3126

32-
public IpDatabaseAdapter(final Reader databaseReader) {
27+
public IpDatabaseAdapter(final MaxMindDbBridge.Reader databaseReader) {
3328
this.databaseReader = databaseReader;
34-
this.databaseType = databaseReader.getMetadata().getDatabaseType();
29+
this.databaseType = databaseReader.getDatabaseType();
3530
}
3631

3732
@Override
@@ -40,12 +35,8 @@ public String getDatabaseType() {
4035
}
4136

4237
@Override
43-
public <RESPONSE> RESPONSE getResponse(String ipAddress, CheckedBiFunction<Reader, String, RESPONSE, Exception> responseProvider) {
44-
try {
45-
return responseProvider.apply(this.databaseReader, ipAddress);
46-
} catch (Exception e) {
47-
throw ExceptionsHelper.convertToRuntime(e);
48-
}
38+
public MaxMindDbBridge.Reader getDatabaseReader() throws IOException {
39+
return this.databaseReader;
4940
}
5041

5142
@Override
@@ -67,25 +58,25 @@ boolean isReaderClosed() {
6758
}
6859

6960
public static IpDatabaseAdapter defaultForPath(final Path database) throws IOException {
70-
return new Builder(database.toFile()).setCache(new CHMCache(10_000)).build();
61+
return new Builder(database.toFile()).setCache(MaxMindDbBridge.NodeCache.get(10_000)).build();
7162
}
7263

7364
public static class Builder {
7465
private File databasePath;
75-
private NodeCache nodeCache;
66+
private MaxMindDbBridge.NodeCache nodeCache;
7667

77-
public Builder(File databasePath) {
68+
public Builder(final File databasePath) {
7869
this.databasePath = databasePath;
7970
}
8071

81-
public Builder setCache(final NodeCache nodeCache) {
72+
public Builder setCache(final MaxMindDbBridge.NodeCache nodeCache) {
8273
this.nodeCache = nodeCache;
8374
return this;
8475
}
8576

8677
public IpDatabaseAdapter build() throws IOException {
87-
final NodeCache nodeCache = Optional.ofNullable(this.nodeCache).orElseGet(NoCache::getInstance);
88-
final Reader databaseReader = new Reader(this.databasePath, nodeCache);
78+
final MaxMindDbBridge.NodeCache nodeCache = Optional.ofNullable(this.nodeCache).orElseGet(MaxMindDbBridge.NodeCache::getInstance);
79+
final MaxMindDbBridge.Reader databaseReader = new MaxMindDbBridge.Reader(this.databasePath, nodeCache);
8980
return new IpDatabaseAdapter(databaseReader);
9081
}
9182
}

src/main/java/co/elastic/logstash/filters/elasticintegration/geoip/IpDatabaseHolder.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package co.elastic.logstash.filters.elasticintegration.geoip;
22

3-
import org.elasticsearch.ingest.geoip.IpDatabase;
4-
53
interface IpDatabaseHolder {
64
boolean isValid();
75

src/main/java/co/elastic/logstash/filters/elasticintegration/geoip/IpDatabaseProvider.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
import org.apache.logging.log4j.LogManager;
1010
import org.apache.logging.log4j.Logger;
11-
import org.elasticsearch.cluster.metadata.ProjectId;
12-
import org.elasticsearch.ingest.geoip.IpDatabase;
1311
import org.elasticsearch.logstashbridge.core.IOUtilsBridge;
12+
import org.elasticsearch.logstashbridge.geoip.IpDatabaseBridge;
13+
import org.elasticsearch.logstashbridge.geoip.IpDatabaseProviderBridge;
1414

1515
import java.io.Closeable;
1616
import java.io.File;
@@ -23,24 +23,24 @@
2323
import java.util.Map;
2424
import java.util.Objects;
2525

26-
public class IpDatabaseProvider implements org.elasticsearch.ingest.geoip.IpDatabaseProvider, Closeable {
26+
public class IpDatabaseProvider extends IpDatabaseProviderBridge.AbstractExternal implements Closeable {
2727

2828
private static final Logger LOGGER = LogManager.getLogger(IpDatabaseProvider.class);
2929

3030
private final Map<String, IpDatabaseHolder> databaseMap;
3131

32-
IpDatabaseProvider(Map<String, IpDatabaseHolder> databaseMap) {
32+
public IpDatabaseProvider(Map<String, IpDatabaseHolder> databaseMap) {
3333
this.databaseMap = Map.copyOf(databaseMap);
3434
}
3535

3636
@Override
37-
public Boolean isValid(ProjectId projectId, String databaseIdentifierFileName) {
37+
public Boolean isValid(String databaseIdentifierFileName) {
3838
final IpDatabaseHolder holder = getDatabaseHolder(databaseIdentifierFileName);
3939
return Objects.nonNull(holder) && holder.isValid();
4040
}
4141

4242
@Override
43-
public IpDatabase getDatabase(ProjectId projectId, String databaseIdentifierFileName) {
43+
public IpDatabaseBridge getDatabase(String databaseIdentifierFileName) {
4444
final IpDatabaseHolder holder = getDatabaseHolder(databaseIdentifierFileName);
4545
if (Objects.isNull(holder)) {
4646
return null;

src/main/java/co/elastic/logstash/filters/elasticintegration/geoip/ValidatableIpDatabase.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/main/java/co/elastic/logstash/filters/elasticintegration/util/PluginProjectResolver.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)