Describe the bug
After I upgraded OpenSearch from 2.9.1 to 3.3.2 I started observing errors about not being able to access the .opendistro-job-scheduler-lock system table.
I decided to reinstall and restore indices from snapshots. Then I restored my ISM policies. I started getting similar errors that the plugin cannot create the index.
Error
[2025-12-05T15:49:06,791][ERROR][o.o.b.OpenSearchUncaughtExceptionHandler] [node10] uncaught exception in thread [DefaultDispatcher-worker-2]
org.opensearch.OpenSearchSecurityException: no permissions for [] and User [name=plugin:org.opensearch.jobscheduler.JobSchedulerPlugin, backend_roles=[], requestedTenant=null]
Stacktrace
[2025-12-05T15:49:06,790][INFO ][o.o.j.t.PluginClient ] [node10] Running transport action with subject: plugin:org.opensearch.jobscheduler.JobSchedulerPlugin
[2025-12-05T15:49:06,791][INFO ][o.o.s.p.SystemIndexAccessEvaluator] [node10] No indices:admin/create permission for user roles [] to System Indices .opendistro-job-scheduler-lock
[2025-12-05T15:49:06,791][ERROR][o.o.b.OpenSearchUncaughtExceptionHandler] [node10] uncaught exception in thread [DefaultDispatcher-worker-2]
org.opensearch.OpenSearchSecurityException: no permissions for [] and User [name=plugin:org.opensearch.jobscheduler.JobSchedulerPlugin, backend_roles=[], requestedTenant=null]
at org.opensearch.security.filter.SecurityFilter.lambda$apply0$3(SecurityFilter.java:415) ~[?:?]
at org.opensearch.security.filter.SecurityFilter.apply0(SecurityFilter.java:509) ~[?:?]
at org.opensearch.security.filter.SecurityFilter.apply(SecurityFilter.java:175) ~[?:?]
at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:218) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.performanceanalyzer.action.PerformanceAnalyzerActionFilter.apply(PerformanceAnalyzerActionFilter.java:81) ~[?:?]
at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:218) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.action.support.TransportAction.execute(TransportAction.java:190) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.action.support.TransportAction.execute(TransportAction.java:109) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.node.NodeClient.executeLocally(NodeClient.java:113) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.node.NodeClient.doExecute(NodeClient.java:100) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.support.AbstractClient.execute(AbstractClient.java:501) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.FilterClient.doExecute(FilterClient.java:83) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.jobscheduler.transport.PluginClient.lambda$doExecute$0(PluginClient.java:56) ~[?:?]
at org.opensearch.security.identity.SecurePluginSubject.runAs(SecurePluginSubject.java:52) ~[?:?]
at org.opensearch.jobscheduler.transport.PluginClient.doExecute(PluginClient.java:54) ~[?:?]
at org.opensearch.transport.client.support.AbstractClient.execute(AbstractClient.java:501) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1610) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.support.AbstractClient$IndicesAdmin.create(AbstractClient.java:1700) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.jobscheduler.utils.LockServiceImpl.createLockIndex(LockServiceImpl.java:108) ~[opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.utils.LockServiceImpl.acquireLockWithId(LockServiceImpl.java:177) ~[opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.utils.LockServiceImpl.acquireLock(LockServiceImpl.java:138) ~[opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexRunner$runJob$1.invokeSuspend$lambda$0(ManagedIndexRunner.kt:244) ~[opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.opensearchapi.OpenSearchExtensionsKt.suspendUntil(OpenSearchExtensions.kt:230) ~[opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexRunner$runJob$1.invokeSuspend(ManagedIndexRunner.kt:244) ~[opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [kotlin-stdlib-2.2.0.jar:2.2.0-release-294]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException
I created the index manually based on the plugin settings:
PUT .opendistro-job-scheduler-lock
{
"mappings": {
"dynamic": "strict",
"properties": {
"job_id": {
"type": "keyword"
},
"job_index_name": {
"type": "keyword"
},
"lock_duration_seconds": {
"type": "long"
},
"lock_time": {
"type": "date",
"format": "epoch_second"
},
"released": {
"type": "boolean"
}
}
},
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": "1"
}
}
}
And I started getting the same error as before:
Error
[2025-12-05T15:59:15,241][ERROR][o.o.j.u.LockServiceImpl ] [node10] Exception occurred finding lock
org.opensearch.OpenSearchSecurityException: no permissions for [] and User [name=plugin:org.opensearch.jobscheduler.JobSchedulerPlugin, backend_roles=[], requestedTenant=null]
Stacktrace
[2025-12-05T15:59:15,240][INFO ][o.o.j.t.PluginClient ] [node10] Running transport action with subject: plugin:org.opensearch.jobscheduler.JobSchedulerPlugin
[2025-12-05T15:59:15,241][INFO ][o.o.s.p.SystemIndexAccessEvaluator] [node10] No indices:data/read/get permission for user roles [] to System Indices .opendistro-job-scheduler-lock
[2025-12-05T15:59:15,241][ERROR][o.o.j.u.LockServiceImpl ] [node10] Exception occurred finding lock
org.opensearch.OpenSearchSecurityException: no permissions for [] and User [name=plugin:org.opensearch.jobscheduler.JobSchedulerPlugin, backend_roles=[], requestedTenant=null]
at org.opensearch.security.filter.SecurityFilter.lambda$apply0$3(SecurityFilter.java:415) [opensearch-security-3.3.2.0.jar:3.3.2.0]
at org.opensearch.security.filter.SecurityFilter.apply0(SecurityFilter.java:509) [opensearch-security-3.3.2.0.jar:3.3.2.0]
at org.opensearch.security.filter.SecurityFilter.apply(SecurityFilter.java:175) [opensearch-security-3.3.2.0.jar:3.3.2.0]
at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:218) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.performanceanalyzer.action.PerformanceAnalyzerActionFilter.apply(PerformanceAnalyzerActionFilter.java:81) [opensearch-performance-analyzer-3.3.2.0.jar:3.3.2.0]
at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:218) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.action.support.TransportAction.execute(TransportAction.java:190) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.action.support.TransportAction.execute(TransportAction.java:109) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.node.NodeClient.executeLocally(NodeClient.java:113) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.node.NodeClient.doExecute(NodeClient.java:100) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.support.AbstractClient.execute(AbstractClient.java:501) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.FilterClient.doExecute(FilterClient.java:83) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.jobscheduler.transport.PluginClient.lambda$doExecute$0(PluginClient.java:56) [opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.security.identity.SecurePluginSubject.runAs(SecurePluginSubject.java:52) [opensearch-security-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.transport.PluginClient.doExecute(PluginClient.java:54) [opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.transport.client.support.AbstractClient.execute(AbstractClient.java:501) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.support.AbstractClient.get(AbstractClient.java:597) [opensearch-3.3.2.jar:3.3.2]
at org.opensearch.jobscheduler.utils.LockServiceImpl.findLock(LockServiceImpl.java:282) [opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.utils.LockServiceImpl.lambda$acquireLockWithId$0(LockServiceImpl.java:180) [opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.core.action.ActionListener$1.onResponse(ActionListener.java:82) [opensearch-core-3.3.2.jar:3.3.2]
at org.opensearch.jobscheduler.utils.LockServiceImpl.createLockIndex(LockServiceImpl.java:102) [opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.utils.LockServiceImpl.acquireLockWithId(LockServiceImpl.java:177) [opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.utils.LockServiceImpl.acquireLock(LockServiceImpl.java:138) [opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexRunner$runJob$1.invokeSuspend$lambda$0(ManagedIndexRunner.kt:244) [opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.opensearchapi.OpenSearchExtensionsKt.suspendUntil(OpenSearchExtensions.kt:230) [opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexRunner$runJob$1.invokeSuspend(ManagedIndexRunner.kt:244) [opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [kotlin-stdlib-2.2.0.jar:2.2.0-release-294]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
[2025-12-05T15:59:15,243][ERROR][o.o.b.OpenSearchUncaughtExceptionHandler] [node10] uncaught exception in thread [DefaultDispatcher-worker-2]
org.opensearch.OpenSearchSecurityException: no permissions for [] and User [name=plugin:org.opensearch.jobscheduler.JobSchedulerPlugin, backend_roles=[], requestedTenant=null]
at org.opensearch.security.filter.SecurityFilter.lambda$apply0$3(SecurityFilter.java:415) ~[?:?]
at org.opensearch.security.filter.SecurityFilter.apply0(SecurityFilter.java:509) ~[?:?]
at org.opensearch.security.filter.SecurityFilter.apply(SecurityFilter.java:175) ~[?:?]
at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:218) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.performanceanalyzer.action.PerformanceAnalyzerActionFilter.apply(PerformanceAnalyzerActionFilter.java:81) ~[?:?]
at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:218) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.action.support.TransportAction.execute(TransportAction.java:190) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.action.support.TransportAction.execute(TransportAction.java:109) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.node.NodeClient.executeLocally(NodeClient.java:113) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.node.NodeClient.doExecute(NodeClient.java:100) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.support.AbstractClient.execute(AbstractClient.java:501) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.FilterClient.doExecute(FilterClient.java:83) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.jobscheduler.transport.PluginClient.lambda$doExecute$0(PluginClient.java:56) ~[?:?]
at org.opensearch.security.identity.SecurePluginSubject.runAs(SecurePluginSubject.java:52) ~[?:?]
at org.opensearch.jobscheduler.transport.PluginClient.doExecute(PluginClient.java:54) ~[?:?]
at org.opensearch.transport.client.support.AbstractClient.execute(AbstractClient.java:501) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.transport.client.support.AbstractClient.get(AbstractClient.java:597) ~[opensearch-3.3.2.jar:3.3.2]
at org.opensearch.jobscheduler.utils.LockServiceImpl.findLock(LockServiceImpl.java:282) ~[opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.utils.LockServiceImpl.lambda$acquireLockWithId$0(LockServiceImpl.java:180) ~[opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.core.action.ActionListener$1.onResponse(ActionListener.java:82) ~[opensearch-core-3.3.2.jar:3.3.2]
at org.opensearch.jobscheduler.utils.LockServiceImpl.createLockIndex(LockServiceImpl.java:102) ~[opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.utils.LockServiceImpl.acquireLockWithId(LockServiceImpl.java:177) ~[opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.jobscheduler.utils.LockServiceImpl.acquireLock(LockServiceImpl.java:138) ~[opensearch-job-scheduler-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexRunner$runJob$1.invokeSuspend$lambda$0(ManagedIndexRunner.kt:244) ~[opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.opensearchapi.OpenSearchExtensionsKt.suspendUntil(OpenSearchExtensions.kt:230) ~[opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at org.opensearch.indexmanagement.indexstatemanagement.ManagedIndexRunner$runJob$1.invokeSuspend(ManagedIndexRunner.kt:244) ~[opensearch-index-management-3.3.2.0.jar:3.3.2.0]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [kotlin-stdlib-2.2.0.jar:2.2.0-release-294]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) [kotlinx-coroutines-core-jvm-1.7.3.jar:?]
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException
Additional Information
All the policy managed indices are in the initializing state.
Related component
Plugins
To Reproduce
- Install OS 3.3.2
- Create an index
- Apply an ISM policy to the index
- Observe the logs for the aforementioned error.
Expected behavior
The plugin is able to access the indices it needs.
Additional Details
Plugins
Default
Screenshots
NA
Host/Environment (please complete the following information):
- OS: Ubuntu
- Version 20.04.6 LTS
Additional context
Installed using Debian .dpkg.
Describe the bug
After I upgraded OpenSearch from 2.9.1 to 3.3.2 I started observing errors about not being able to access the
.opendistro-job-scheduler-locksystem table.I decided to reinstall and restore indices from snapshots. Then I restored my ISM policies. I started getting similar errors that the plugin cannot create the index.
Error
Stacktrace
I created the index manually based on the plugin settings:
And I started getting the same error as before:
Error
Stacktrace
Additional Information
All the policy managed indices are in the initializing state.
Related component
Plugins
To Reproduce
Expected behavior
The plugin is able to access the indices it needs.
Additional Details
Plugins
Default
Screenshots
NA
Host/Environment (please complete the following information):
Additional context
Installed using Debian .dpkg.