Skip to content

Commit d48afcf

Browse files
committed
Allow system to perform actions on system indices
Signed-off-by: Craig Perkins <[email protected]>
1 parent fb2cbb0 commit d48afcf

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

sandbox/modules/system-index-protection/src/main/java/org/opensearch/index/filter/SystemIndexFilter.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.opensearch.core.rest.RestStatus;
1818
import org.opensearch.indices.SystemIndexRegistry;
1919
import org.opensearch.tasks.Task;
20+
import org.opensearch.threadpool.ThreadPool;
2021

2122
import java.util.ArrayList;
2223
import java.util.List;
@@ -27,9 +28,11 @@ public class SystemIndexFilter implements ActionFilter {
2728

2829
private final IndexResolverReplacer indexResolverReplacer;
2930
private final WildcardMatcher deniedActionsMatcher;
31+
private final ThreadPool threadPool;
3032

31-
public SystemIndexFilter(final IndexResolverReplacer indexResolverReplacer) {
33+
public SystemIndexFilter(final IndexResolverReplacer indexResolverReplacer, final ThreadPool threadPool) {
3234
this.indexResolverReplacer = indexResolverReplacer;
35+
this.threadPool = threadPool;
3336

3437
final List<String> deniedActionPatternsList = deniedActionPatterns();
3538

@@ -63,6 +66,10 @@ public <Request extends ActionRequest, Response extends ActionResponse> void app
6366
ActionListener<Response> listener,
6467
ActionFilterChain<Request, Response> chain
6568
) {
69+
if (threadPool.getThreadContext().isSystemContext()) {
70+
chain.proceed(task, action, request, listener);
71+
return;
72+
}
6673
if (deniedActionsMatcher.test(action)) {
6774
final IndexResolverReplacer.Resolved resolved = indexResolverReplacer.resolveRequest(request);
6875
final Set<String> allIndices = resolved.getAllIndices();

sandbox/modules/system-index-protection/src/main/java/org/opensearch/plugin/systemindex/SystemIndexProtectionPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public Collection<Object> createComponents(
8686

8787
final IndexNameExpressionResolver resolver = new IndexNameExpressionResolver(threadPool.getThreadContext());
8888
irr = new IndexResolverReplacer(resolver, clusterService::state, cih);
89-
sif = new SystemIndexFilter(irr);
89+
sif = new SystemIndexFilter(irr, localClient.threadPool());
9090
return Collections.emptySet();
9191
}
9292

server/src/main/java/org/opensearch/client/OriginSettingClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ protected <Request extends ActionRequest, Response extends ActionResponse> void
7171
() -> in().threadPool().getThreadContext().stashWithOrigin(origin)
7272
)
7373
) {
74+
ThreadContext threadContext = in().threadPool().getThreadContext();
75+
ThreadContextAccess.doPrivilegedVoid(threadContext::markAsSystemContext);
7476
super.doExecute(action, request, new ContextPreservingActionListener<>(supplier, listener));
7577
}
7678
}

0 commit comments

Comments
 (0)