You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vyacheslav Koptilin (Jira)" <ji...@apache.org> on 2021/09/07 12:05:00 UTC

[jira] [Updated] (IGNITE-15378) Node fails to restart in maintenance mode with security enabled.

     [ https://issues.apache.org/jira/browse/IGNITE-15378?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vyacheslav Koptilin updated IGNITE-15378:
-----------------------------------------
    Fix Version/s: 2.12

> Node fails 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
>            Assignee: Mikhail Petrov
>            Priority: Major
>             Fix For: 2.12
>
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> 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)