I want to write elasticsearch ingest plugin to read data from redis cache. Using this tutorial I wrote a simple plugin and tested in elasticsearch.
After that for Redis I use jedis connection pool but when I use gradle check to test my plugin I had security error:
java.security.AccessControlException: access denied ("javax.management.MBeanServerPermission" "createMBeanServer")
Based on this tutorial I construct my connection pool like this but still this error is show after gradle check:
private static final java.security.AccessControlContext RESTRICTED_CONTEXT = new java.security.AccessControlContext(
new java.security.ProtectionDomain[] {
new java.security.ProtectionDomain(null, getRestrictedPermissions())
}
);
@SuppressForbidden(reason = "adds access for bean creation")
static java.security.PermissionCollection getRestrictedPermissions() {
java.security.Permissions perms = new java.security.Permissions();
perms.add(new MBeanServerPermission("createMBeanServer"));
perms.add(new MBeanTrustPermission("register"));
return perms;
}
jedisPool = java.security.AccessController.doPrivileged((PrivilegedAction<JedisPool>) () ->
new JedisPool(buildPoolConfig(), "localhost"),
RESTRICTED_CONTEXT);
error is like this:
access denied ("javax.management.MBeanServerPermission" "createMBeanServer")
java.security.AccessControlException: access denied ("javax.management.MBeanServerPermission" "createMBeanServer")
at __randomizedtesting.SeedInfo.seed([A1B928A267475939:7CA674E505D803A2]:0)
at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.base/java.security.AccessController.checkPermission(AccessController.java:1044)
at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:408)
at java.management/java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:479)
at org.apache.commons.pool2.impl.BaseGenericObjectPool.jmxRegister(BaseGenericObjectPool.java:1042)
at org.apache.commons.pool2.impl.BaseGenericObjectPool.(BaseGenericObjectPool.java:141)
at org.apache.commons.pool2.impl.GenericObjectPool.(GenericObjectPool.java:105)
at redis.clients.jedis.util.Pool.initPool(Pool.java:45)
at redis.clients.jedis.util.Pool.(Pool.java:24)
at redis.clients.jedis.JedisPoolAbstract.(JedisPoolAbstract.java:15)
at redis.clients.jedis.JedisPool.(JedisPool.java:181)
at redis.clients.jedis.JedisPool.(JedisPool.java:145)
at redis.clients.jedis.JedisPool.(JedisPool.java:127)
at redis.clients.jedis.JedisPool.(JedisPool.java:76)
at redis.clients.jedis.JedisPool.(JedisPool.java:110)
at redis.clients.jedis.JedisPool.(JedisPool.java:93)
at redis.clients.jedis.JedisPool.(JedisPool.java:22)
at com.shalgham.plugin.ingest.sheved.SPR.lambda$new$0(SPR.java:73)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
at com.shalgham.plugin.ingest.sheved.SPR.(SPR.java:72)
at com.shalgham.plugin.ingest.sheved.SPRTests.testEmptyField(SPRTests.java:85)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:938)
at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:974)
at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
...
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
at java.base/java.lang.Thread.run(Thread.java:835)
Is there anything I missed?