Skip to content

Commit 31fca85

Browse files
committed
Add FixForMultiProject and other fix
1 parent c611574 commit 31fca85

File tree

3 files changed

+12
-11
lines changed

3 files changed

+12
-11
lines changed

modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/DatabaseNodeService.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
import org.elasticsearch.common.logging.HeaderWarning;
3030
import org.elasticsearch.core.CheckedConsumer;
3131
import org.elasticsearch.core.CheckedRunnable;
32+
import org.elasticsearch.core.FixForMultiProject;
3233
import org.elasticsearch.core.IOUtils;
34+
import org.elasticsearch.core.NotMultiProjectCapable;
3335
import org.elasticsearch.core.Nullable;
3436
import org.elasticsearch.core.Tuple;
3537
import org.elasticsearch.env.Environment;
@@ -289,15 +291,12 @@ void checkDatabases(ClusterState state) {
289291
}
290292

291293
// Optimization: only load the .geoip_databases for projects that are allocated to this node
292-
for (ProjectId projectId : state.metadata().projects().keySet()) {
293-
checkDatabases(state.projectState(projectId));
294-
}
294+
state.forEachProject(this::checkDatabases);
295295
}
296296

297297
void checkDatabases(ProjectState projectState) {
298298
ProjectId projectId = projectState.projectId();
299299
ProjectMetadata projectMetadata = projectState.metadata();
300-
ClusterState clusterState = projectState.cluster();
301300
PersistentTasksCustomMetadata persistentTasks = projectMetadata.custom(PersistentTasksCustomMetadata.TYPE);
302301
if (persistentTasks == null) {
303302
logger.trace("Not checking databases for project [{}] because persistent tasks are null", projectId);
@@ -343,7 +342,10 @@ void checkDatabases(ProjectState projectState) {
343342

344343
// process the geoip task state for the enterprise geoip downloader
345344
{
346-
EnterpriseGeoIpTaskState taskState = getEnterpriseGeoIpTaskState(projectState.cluster());
345+
@NotMultiProjectCapable(description = "Enterprise GeoIP not supported in serverless")
346+
EnterpriseGeoIpTaskState taskState = getEnterpriseGeoIpTaskState(
347+
projectState.cluster().metadata().getProject(ProjectId.DEFAULT)
348+
);
347349
if (taskState == null) {
348350
// Note: an empty state will purge stale entries in databases map
349351
taskState = EnterpriseGeoIpTaskState.EMPTY;

modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/EnterpriseGeoIpTaskState.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@
1111

1212
import org.elasticsearch.TransportVersion;
1313
import org.elasticsearch.TransportVersions;
14-
import org.elasticsearch.cluster.ClusterState;
15-
import org.elasticsearch.cluster.metadata.ProjectId;
14+
import org.elasticsearch.cluster.metadata.ProjectMetadata;
1615
import org.elasticsearch.common.io.stream.StreamInput;
1716
import org.elasticsearch.common.io.stream.StreamOutput;
1817
import org.elasticsearch.common.io.stream.VersionedNamedWriteable;
19-
import org.elasticsearch.core.FixForMultiProject;
2018
import org.elasticsearch.core.Nullable;
2119
import org.elasticsearch.core.Tuple;
2220
import org.elasticsearch.ingest.EnterpriseGeoIpTask;
@@ -148,10 +146,9 @@ public void writeTo(StreamOutput out) throws IOException {
148146
* @return the geoip downloader's task state or null if there is not a state to read
149147
*/
150148
@Nullable
151-
@FixForMultiProject(description = "Replace ProjectId.DEFAULT")
152-
static EnterpriseGeoIpTaskState getEnterpriseGeoIpTaskState(ClusterState state) {
149+
static EnterpriseGeoIpTaskState getEnterpriseGeoIpTaskState(ProjectMetadata projectMetadata) {
153150
PersistentTasksCustomMetadata.PersistentTask<?> task = getTaskWithId(
154-
state.metadata().getProject(ProjectId.DEFAULT),
151+
projectMetadata,
155152
EnterpriseGeoIpTask.ENTERPRISE_GEOIP_DOWNLOADER
156153
);
157154
return (task == null) ? null : (EnterpriseGeoIpTaskState) task.getState();

modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/GeoIpTaskState.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.elasticsearch.common.io.stream.StreamOutput;
1717
import org.elasticsearch.common.io.stream.VersionedNamedWriteable;
1818
import org.elasticsearch.common.settings.Settings;
19+
import org.elasticsearch.core.FixForMultiProject;
1920
import org.elasticsearch.core.Nullable;
2021
import org.elasticsearch.core.TimeValue;
2122
import org.elasticsearch.core.Tuple;
@@ -214,6 +215,7 @@ public boolean isCloseToExpiration() {
214215
private static final TimeValue THIRTY_DAYS = TimeValue.timeValueDays(30);
215216
private static final long THIRTY_DAYS_MILLIS = THIRTY_DAYS.millis();
216217

218+
@FixForMultiProject(description = "Replace caller from cluster settings to project settings")
217219
public boolean isNewEnough(Settings settings) {
218220
// micro optimization: this looks a little silly, but the expected case is that database_validity is only used in tests.
219221
// we run this code on every document, though, so the argument checking and other bits that getAsTime does is enough

0 commit comments

Comments
 (0)