Search in sources :

Example 1 with ValidateIndexesCheckSizeIssue

use of org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeIssue in project ignite by apache.

the class GridCommandHandlerIndexingCheckSizeTest method validateCheckSizes.

/**
 * Checking whether cache and index size check is correct.
 *
 * @param node Node.
 * @param cacheName Cache name.
 * @param rmvByTbl Number of deleted items per table.
 * @param cacheSizeExp Function for getting expected cache size.
 * @param idxSizeExp Function for getting expected index size.
 */
private void validateCheckSizes(IgniteEx node, String cacheName, Map<String, AtomicInteger> rmvByTbl, Function<AtomicInteger, Integer> cacheSizeExp, Function<AtomicInteger, Integer> idxSizeExp) {
    requireNonNull(node);
    requireNonNull(cacheName);
    requireNonNull(rmvByTbl);
    requireNonNull(cacheSizeExp);
    requireNonNull(idxSizeExp);
    injectTestSystemOut();
    assertEquals(EXIT_CODE_OK, execute(CACHE.text(), VALIDATE_INDEXES.text(), cacheName, CHECK_SIZES.argName()));
    String out = testOut.toString();
    assertContains(log, out, "issues found (listed above)");
    assertContains(log, out, "Size check");
    Map<String, ValidateIndexesCheckSizeResult> valIdxCheckSizeResults = ((VisorValidateIndexesTaskResult) lastOperationResult).results().get(node.localNode().id()).checkSizeResult();
    assertEquals(rmvByTbl.size(), valIdxCheckSizeResults.size());
    for (Map.Entry<String, AtomicInteger> rmvByTblEntry : rmvByTbl.entrySet()) {
        ValidateIndexesCheckSizeResult checkSizeRes = valIdxCheckSizeResults.entrySet().stream().filter(e -> e.getKey().contains(rmvByTblEntry.getKey())).map(Map.Entry::getValue).findAny().orElse(null);
        assertNotNull(checkSizeRes);
        assertEquals((int) cacheSizeExp.apply(rmvByTblEntry.getValue()), checkSizeRes.cacheSize());
        Collection<ValidateIndexesCheckSizeIssue> issues = checkSizeRes.issues();
        assertFalse(issues.isEmpty());
        issues.forEach(issue -> {
            assertEquals((int) idxSizeExp.apply(rmvByTblEntry.getValue()), issue.indexSize());
            Throwable err = issue.error();
            assertNotNull(err);
            assertEquals("Cache and index size not same.", err.getMessage());
        });
    }
}
Also used : Person(org.apache.ignite.util.GridCommandHandlerIndexingUtils.Person) CHECK_SIZES(org.apache.ignite.internal.commandline.cache.argument.ValidateIndexesCommandArg.CHECK_SIZES) GridCommandHandlerIndexingUtils.organizationEntity(org.apache.ignite.util.GridCommandHandlerIndexingUtils.organizationEntity) SqlFieldsQuery(org.apache.ignite.cache.query.SqlFieldsQuery) HashMap(java.util.HashMap) Random(java.util.Random) IgniteEx(org.apache.ignite.internal.IgniteEx) GridCommandHandlerIndexingUtils.createAndFillCache(org.apache.ignite.util.GridCommandHandlerIndexingUtils.createAndFillCache) Function(java.util.function.Function) EXIT_CODE_OK(org.apache.ignite.internal.commandline.CommandHandler.EXIT_CODE_OK) ArrayList(java.util.ArrayList) CACHE_NAME(org.apache.ignite.util.GridCommandHandlerIndexingUtils.CACHE_NAME) GridCommandHandlerIndexingUtils.personEntity(org.apache.ignite.util.GridCommandHandlerIndexingUtils.personEntity) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Arrays.asList(java.util.Arrays.asList) Map(java.util.Map) ThreadLocalRandom(java.util.concurrent.ThreadLocalRandom) Objects.requireNonNull(java.util.Objects.requireNonNull) Cache(javax.cache.Cache) GridCommandHandlerIndexingUtils.breakCacheDataTree(org.apache.ignite.util.GridCommandHandlerIndexingUtils.breakCacheDataTree) QueryEntity(org.apache.ignite.cache.QueryEntity) ValidateIndexesCommandArg(org.apache.ignite.internal.commandline.cache.argument.ValidateIndexesCommandArg) ValidateIndexesCheckSizeIssue(org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeIssue) GridTestUtils.assertNotContains(org.apache.ignite.testframework.GridTestUtils.assertNotContains) VisorValidateIndexesTaskResult(org.apache.ignite.internal.visor.verify.VisorValidateIndexesTaskResult) Collections.emptyMap(java.util.Collections.emptyMap) VALIDATE_INDEXES(org.apache.ignite.internal.commandline.cache.CacheSubcommands.VALIDATE_INDEXES) GridCommandHandlerIndexingUtils.breakSqlIndex(org.apache.ignite.util.GridCommandHandlerIndexingUtils.breakSqlIndex) Collection(java.util.Collection) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) IgniteException(org.apache.ignite.IgniteException) Test(org.junit.Test) CacheSubcommands(org.apache.ignite.internal.commandline.cache.CacheSubcommands) CacheObject(org.apache.ignite.internal.processors.cache.CacheObject) CacheDataRow(org.apache.ignite.internal.processors.cache.persistence.CacheDataRow) IgniteCache(org.apache.ignite.IgniteCache) GridTestUtils.assertContains(org.apache.ignite.testframework.GridTestUtils.assertContains) CACHE(org.apache.ignite.internal.commandline.CommandList.CACHE) List(java.util.List) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) String.valueOf(java.lang.String.valueOf) Organization(org.apache.ignite.util.GridCommandHandlerIndexingUtils.Organization) IgniteDataStreamer(org.apache.ignite.IgniteDataStreamer) GROUP_NAME(org.apache.ignite.util.GridCommandHandlerIndexingUtils.GROUP_NAME) ValidateIndexesCheckSizeResult(org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeResult) DataRegionConfiguration(org.apache.ignite.configuration.DataRegionConfiguration) ValidateIndexesCheckSizeIssue(org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeIssue) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) VisorValidateIndexesTaskResult(org.apache.ignite.internal.visor.verify.VisorValidateIndexesTaskResult) ValidateIndexesCheckSizeResult(org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeResult) HashMap(java.util.HashMap) Map(java.util.Map) Collections.emptyMap(java.util.Collections.emptyMap)

Example 2 with ValidateIndexesCheckSizeIssue

use of org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeIssue in project ignite by apache.

the class CacheValidateIndexes method execute.

/**
 * {@inheritDoc}
 */
@Override
public Object execute(GridClientConfiguration clientCfg, Logger logger) throws Exception {
    VisorValidateIndexesTaskArg taskArg = new VisorValidateIndexesTaskArg(args.caches(), args.nodeId() != null ? Collections.singleton(args.nodeId()) : null, args.checkFirst(), args.checkThrough(), args.checkCrc(), args.checkSizes());
    try (GridClient client = Command.startClient(clientCfg)) {
        VisorValidateIndexesTaskResult taskRes = executeTaskByNameOnNode(client, "org.apache.ignite.internal.visor.verify.VisorValidateIndexesTask", taskArg, null, clientCfg);
        boolean errors = CommandLogger.printErrors(taskRes.exceptions(), "Index validation failed on nodes:", logger);
        for (Entry<UUID, VisorValidateIndexesJobResult> nodeEntry : taskRes.results().entrySet()) {
            VisorValidateIndexesJobResult jobRes = nodeEntry.getValue();
            if (!jobRes.hasIssues())
                continue;
            errors = true;
            logger.info("Index issues found on node " + nodeEntry.getKey() + ":");
            for (IndexIntegrityCheckIssue is : jobRes.integrityCheckFailures()) logger.info(INDENT + is);
            for (Entry<PartitionKey, ValidateIndexesPartitionResult> e : jobRes.partitionResult().entrySet()) {
                ValidateIndexesPartitionResult res = e.getValue();
                if (!res.issues().isEmpty()) {
                    logger.info(INDENT + join(" ", e.getKey(), e.getValue()));
                    for (IndexValidationIssue is : res.issues()) logger.info(DOUBLE_INDENT + is);
                }
            }
            for (Entry<String, ValidateIndexesPartitionResult> e : jobRes.indexResult().entrySet()) {
                ValidateIndexesPartitionResult res = e.getValue();
                if (!res.issues().isEmpty()) {
                    logger.info(INDENT + join(" ", "SQL Index", e.getKey(), e.getValue()));
                    for (IndexValidationIssue is : res.issues()) logger.info(DOUBLE_INDENT + is);
                }
            }
            for (Entry<String, ValidateIndexesCheckSizeResult> e : jobRes.checkSizeResult().entrySet()) {
                ValidateIndexesCheckSizeResult res = e.getValue();
                Collection<ValidateIndexesCheckSizeIssue> issues = res.issues();
                if (issues.isEmpty())
                    continue;
                logger.info(INDENT + join(" ", "Size check", e.getKey(), res));
                for (ValidateIndexesCheckSizeIssue issue : issues) logger.info(DOUBLE_INDENT + issue);
            }
        }
        if (!errors)
            logger.info("no issues found.");
        else
            logger.severe("issues found (listed above).");
        logger.info("");
        return taskRes;
    }
}
Also used : IndexValidationIssue(org.apache.ignite.internal.visor.verify.IndexValidationIssue) GridClient(org.apache.ignite.internal.client.GridClient) ValidateIndexesCheckSizeIssue(org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeIssue) VisorValidateIndexesJobResult(org.apache.ignite.internal.visor.verify.VisorValidateIndexesJobResult) IndexIntegrityCheckIssue(org.apache.ignite.internal.visor.verify.IndexIntegrityCheckIssue) PartitionKey(org.apache.ignite.internal.processors.cache.verify.PartitionKey) VisorValidateIndexesTaskResult(org.apache.ignite.internal.visor.verify.VisorValidateIndexesTaskResult) UUID(java.util.UUID) VisorValidateIndexesTaskArg(org.apache.ignite.internal.visor.verify.VisorValidateIndexesTaskArg) ValidateIndexesCheckSizeResult(org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeResult) ValidateIndexesPartitionResult(org.apache.ignite.internal.visor.verify.ValidateIndexesPartitionResult)

Aggregations

ValidateIndexesCheckSizeIssue (org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeIssue)2 ValidateIndexesCheckSizeResult (org.apache.ignite.internal.visor.verify.ValidateIndexesCheckSizeResult)2 VisorValidateIndexesTaskResult (org.apache.ignite.internal.visor.verify.VisorValidateIndexesTaskResult)2 String.valueOf (java.lang.String.valueOf)1 ArrayList (java.util.ArrayList)1 Arrays.asList (java.util.Arrays.asList)1 Collection (java.util.Collection)1 Collections.emptyMap (java.util.Collections.emptyMap)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Objects.requireNonNull (java.util.Objects.requireNonNull)1 Random (java.util.Random)1 UUID (java.util.UUID)1 ThreadLocalRandom (java.util.concurrent.ThreadLocalRandom)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 Function (java.util.function.Function)1 Cache (javax.cache.Cache)1 IgniteCache (org.apache.ignite.IgniteCache)1 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)1