You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Mikhail Petrov (Jira)" <ji...@apache.org> on 2021/08/26 13:00:12 UTC
[jira] [Created] (IGNITE-15378) Node fail to restart in
maintenance mode with security enabled.
Mikhail Petrov created IGNITE-15378:
---------------------------------------
Summary: Node fail to restart in maintenance mode with security enabled.
Key: IGNITE-15378
URL: https://issues.apache.org/jira/browse/IGNITE-15378
Project: Ignite
Issue Type: Bug
Reporter: Mikhail Petrov
Exception:
{code:java}
class org.apache.ignite.plugin.security.SecurityException: Security context isn't certain.
at org.apache.ignite.internal.processors.security.SecurityUtils.nodeSecurityContext(SecurityUtils.java:158)
at org.apache.ignite.internal.processors.security.IgniteSecurityProcessor.onLocalJoin(IgniteSecurityProcessor.java:399)
at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:799)
at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.lambda$onDiscovery$0(GridDiscoveryManager.java:575)
at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body0(GridDiscoveryManager.java:2793)
at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body(GridDiscoveryManager.java:2831)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
at java.lang.Thread.run(Thread.java:748)
{code}
Reproducer:
{code:java}
/** */
public class MaintenanceModeNodeSecurityTest extends AbstractSecurityTest {
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(
String instanceName,
AbstractTestSecurityPluginProvider pluginProv
) throws Exception {
DataStorageConfiguration dataStorageConfiguration = new DataStorageConfiguration()
.setDefaultDataRegionConfiguration(new DataRegionConfiguration()
.setPersistenceEnabled(true));
return super.getConfiguration(instanceName, pluginProv)
.setDataStorageConfiguration(dataStorageConfiguration);
}
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
cleanPersistenceDir();
super.beforeTestsStarted();
}
/** Tests that node can be successfully restarted in maintenance mode with security enabled. */
@Test
public void testNodeStartInMaintenanceMode() throws Exception {
IgniteEx crd = startGridAllowAll(getTestIgniteInstanceName(0));
IgniteEx srv = startGridAllowAll(getTestIgniteInstanceName(1));
crd.cluster().baselineAutoAdjustEnabled(false);
crd.cluster().state(ACTIVE);
IgniteCache<Object, Object> cache = crd.getOrCreateCache(new CacheConfiguration<>(DEFAULT_CACHE_NAME)
.setAffinity(new RendezvousAffinityFunction(false, 32))
.setBackups(1));
String srvPdsFolder = srv.context().pdsFolderResolver().resolveFolders().folderName();
File dbDir = U.resolveWorkDirectory(srv.configuration().getWorkDirectory(), "db", false);
File srvLfsDir = new File(dbDir, srvPdsFolder);
for (int k = 0; k < 1000; k++)
cache.put(k, k);
GridCacheDatabaseSharedManager srvDbMgr = (GridCacheDatabaseSharedManager)crd.context().cache().context().database();
GridCacheDatabaseSharedManager crdDbMgr = (GridCacheDatabaseSharedManager)srv.context().cache().context().database();
srvDbMgr.forceCheckpoint("cp").futureFor(CheckpointState.FINISHED).get();
crdDbMgr.forceCheckpoint("cp").futureFor(CheckpointState.FINISHED).get();
crd.cluster().disableWal(cache.getName());
for (int k = 1000; k < 2000; k++)
cache.put(k, k);
stopGrid(1);
File[] cpMarkers = new File(srvLfsDir, "cp").listFiles();
for (File cpMark : cpMarkers) {
if (cpMark.getName().contains("-END"))
cpMark.delete();
}
assertThrows(log, () -> startGridAllowAll(getTestIgniteInstanceName(1)), Exception.class, null);
assertTrue(startGridAllowAll(getTestIgniteInstanceName(1)).context().maintenanceRegistry().isMaintenanceMode());
}
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)