Skip to content

Commit 18d6bcb

Browse files
committed
More
1 parent ee93568 commit 18d6bcb

File tree

5 files changed

+30
-6
lines changed

5 files changed

+30
-6
lines changed

server/src/main/java/org/elasticsearch/CrossProjectResolvableRequest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,18 @@
1010
package org.elasticsearch;
1111

1212
import org.elasticsearch.action.IndicesRequest;
13+
import org.elasticsearch.core.Nullable;
1314

1415
import java.util.List;
1516

1617
public interface CrossProjectResolvableRequest extends IndicesRequest {
1718
/**
1819
* Only called if cross-project rewriting was applied
1920
*/
20-
void rewritten(List<RewrittenExpression> rewrittenExpressions);
21+
void setRewrittenExpressions(List<RewrittenExpression> rewrittenExpressions);
22+
23+
@Nullable
24+
List<RewrittenExpression> getRewrittenExpressions();
2125

2226
/**
2327
* Used to track a mapping from original expression (potentially flat) to canonical CCS expressions.

server/src/main/java/org/elasticsearch/action/fieldcaps/FieldCapabilitiesRequest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,12 +382,17 @@ public String getDescription() {
382382
}
383383

384384
@Override
385-
public void rewritten(List<RewrittenExpression> rewrittenExpressions) {
385+
public void setRewrittenExpressions(List<RewrittenExpression> rewrittenExpressions) {
386386
this.rewrittenExpressions = rewrittenExpressions;
387387
indices(
388388
rewrittenExpressions.stream()
389389
.flatMap(indexExpression -> indexExpression.canonicalExpressions().stream().map(CanonicalExpression::expression))
390390
.toArray(String[]::new)
391391
);
392392
}
393+
394+
@Override
395+
public List<RewrittenExpression> getRewrittenExpressions() {
396+
return rewrittenExpressions;
397+
}
393398
}

server/src/main/java/org/elasticsearch/action/search/SearchRequest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -863,12 +863,17 @@ public String toString() {
863863
}
864864

865865
@Override
866-
public void rewritten(List<RewrittenExpression> rewrittenExpressions) {
866+
public void setRewrittenExpressions(List<RewrittenExpression> rewrittenExpressions) {
867867
this.rewrittenExpressions = rewrittenExpressions;
868868
indices(
869869
rewrittenExpressions.stream()
870870
.flatMap(indexExpression -> indexExpression.canonicalExpressions().stream().map(CanonicalExpression::expression))
871871
.toArray(String[]::new)
872872
);
873873
}
874+
875+
@Override
876+
public List<RewrittenExpression> getRewrittenExpressions() {
877+
return rewrittenExpressions;
878+
}
874879
}

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/CrossProjectTargetResolver.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package org.elasticsearch.xpack.core.security.authz;
99

10+
import org.elasticsearch.core.Nullable;
1011
import org.elasticsearch.xpack.core.security.SecurityContext;
1112

1213
import java.util.List;
@@ -25,7 +26,11 @@ public ResolvedProjects resolve(SecurityContext securityContext) {
2526
}
2627
}
2728

28-
record ResolvedProjects(List<String> projects) {
29-
public static ResolvedProjects VOID = new ResolvedProjects(List.of());
29+
record ResolvedProjects(@Nullable String origin, List<String> projects) {
30+
public static ResolvedProjects VOID = new ResolvedProjects(null, List.of());
31+
32+
public boolean isOriginOnly() {
33+
return origin != null && projects.isEmpty();
34+
}
3035
}
3136
}

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/IndicesAndAliasesResolver.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,11 @@ void maybeRewriteCrossProjectResolvableRequest(
157157
return;
158158
}
159159

160+
if (resolvedProjects.isOriginOnly()) {
161+
logger.info("Cross-project search is only for the origin project [{}], skipping rewrite...", resolvedProjects.origin());
162+
return;
163+
}
164+
160165
if (resolvedProjects.projects().isEmpty()) {
161166
throw new ResourceNotFoundException("no target projects for cross-project search request");
162167
}
@@ -184,7 +189,7 @@ void maybeRewriteCrossProjectResolvableRequest(
184189
}
185190
}
186191

187-
request.rewritten(rewrittenExpressions);
192+
request.setRewrittenExpressions(rewrittenExpressions);
188193
}
189194

190195
private List<CrossProjectResolvableRequest.CanonicalExpression> rewriteUnqualified(String indexExpression, List<String> projects) {

0 commit comments

Comments
 (0)