Search in sources :

Example 1 with SchemaIndexCacheVisitorClosure

use of org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure in project ignite by apache.

the class GridQueryProcessor method processSchemaOperationLocal.

/**
 * Process schema operation.
 *
 * @param op Operation.
 * @param type Type descriptor.
 * @param depId Cache deployment ID.
 * @param cancelTok Cancel token.
 * @throws SchemaOperationException If failed.
 */
public void processSchemaOperationLocal(SchemaAbstractOperation op, QueryTypeDescriptorImpl type, IgniteUuid depId, IndexRebuildCancelToken cancelTok) throws SchemaOperationException {
    if (log.isDebugEnabled())
        log.debug("Started local index operation [opId=" + op.id() + ']');
    String cacheName = op.cacheName();
    GridCacheContextInfo<?, ?> cacheInfo = null;
    if (op instanceof SchemaAddQueryEntityOperation) {
        GridCacheContext<?, ?> cctx = ctx.cache().context().cacheContext(CU.cacheId(cacheName));
        if (cctx != null)
            cacheInfo = new GridCacheContextInfo<>(cctx, false);
        else
            return;
    } else
        cacheInfo = idx.registeredCacheInfo(cacheName);
    if (cacheInfo == null || !F.eq(depId, cacheInfo.dynamicDeploymentId()))
        throw new SchemaOperationException(SchemaOperationException.CODE_CACHE_NOT_FOUND, cacheName);
    try {
        if (op instanceof SchemaIndexCreateOperation) {
            SchemaIndexCreateOperation op0 = (SchemaIndexCreateOperation) op;
            QueryIndexDescriptorImpl idxDesc = QueryUtils.createIndexDescriptor(type, op0.index());
            SchemaIndexCacheVisitor visitor;
            if (cacheInfo.isCacheContextInited()) {
                int buildIdxPoolSize = ctx.config().getBuildIndexThreadPoolSize();
                int parallel = op0.parallel();
                if (parallel > buildIdxPoolSize) {
                    String idxName = op0.indexName();
                    log.warning("Provided parallelism " + parallel + " for creation of index " + idxName + " is greater than the number of index building threads. Will use " + buildIdxPoolSize + " threads to build index. Increase by IgniteConfiguration.setBuildIndexThreadPoolSize" + " and restart the node if you want to use more threads. [tableName=" + op0.tableName() + ", indexName=" + idxName + ", requestedParallelism=" + parallel + ", buildIndexPoolSize=" + buildIdxPoolSize + "]");
                }
                GridFutureAdapter<Void> createIdxFut = new GridFutureAdapter<>();
                GridCacheContext<?, ?> cacheCtx = cacheInfo.cacheContext();
                visitor = new SchemaIndexCacheVisitorImpl(cacheCtx, cancelTok, createIdxFut) {

                    /**
                     * {@inheritDoc}
                     */
                    @Override
                    public void visit(SchemaIndexCacheVisitorClosure clo) {
                        idxBuildStatusStorage.onStartBuildNewIndex(cacheCtx);
                        try {
                            super.visit(clo);
                            buildIdxFut.get();
                        } catch (Exception e) {
                            throw new IgniteException(e);
                        } finally {
                            idxBuildStatusStorage.onFinishBuildNewIndex(cacheName);
                        }
                    }
                };
            } else
                // For not started caches we shouldn't add any data to index.
                visitor = clo -> {
                };
            idx.dynamicIndexCreate(op0.schemaName(), op0.tableName(), idxDesc, op0.ifNotExists(), visitor);
        } else if (op instanceof SchemaIndexDropOperation) {
            SchemaIndexDropOperation op0 = (SchemaIndexDropOperation) op;
            idx.dynamicIndexDrop(op0.schemaName(), op0.indexName(), op0.ifExists());
        } else if (op instanceof SchemaAlterTableAddColumnOperation) {
            SchemaAlterTableAddColumnOperation op0 = (SchemaAlterTableAddColumnOperation) op;
            processDynamicAddColumn(type, op0.columns());
            idx.dynamicAddColumn(op0.schemaName(), op0.tableName(), op0.columns(), op0.ifTableExists(), op0.ifNotExists());
        } else if (op instanceof SchemaAlterTableDropColumnOperation) {
            SchemaAlterTableDropColumnOperation op0 = (SchemaAlterTableDropColumnOperation) op;
            processDynamicDropColumn(type, op0.columns());
            idx.dynamicDropColumn(op0.schemaName(), op0.tableName(), op0.columns(), op0.ifTableExists(), op0.ifExists());
        } else if (op instanceof SchemaAddQueryEntityOperation) {
            SchemaAddQueryEntityOperation op0 = (SchemaAddQueryEntityOperation) op;
            if (!cacheNames.contains(op0.cacheName())) {
                cacheInfo.onSchemaAddQueryEntity(op0);
                T3<Collection<QueryTypeCandidate>, Map<String, QueryTypeDescriptorImpl>, Map<String, QueryTypeDescriptorImpl>> candRes = createQueryCandidates(op0.cacheName(), op0.schemaName(), cacheInfo, op0.entities(), op0.isSqlEscape());
                registerCache0(op0.cacheName(), op.schemaName(), cacheInfo, candRes.get1(), false);
            }
            if (idxRebuildFutStorage.prepareRebuildIndexes(singleton(cacheInfo.cacheId()), null).isEmpty())
                rebuildIndexesFromHash0(cacheInfo.cacheContext(), false, cancelTok);
            else {
                if (log.isInfoEnabled())
                    log.info("Rebuilding indexes for the cache is already in progress: " + cacheInfo.name());
            }
        } else
            throw new SchemaOperationException("Unsupported operation: " + op);
    } catch (Throwable e) {
        if (e instanceof SchemaOperationException)
            throw (SchemaOperationException) e;
        else
            throw new SchemaOperationException("Schema change operation failed: " + e.getMessage(), e);
    }
}
Also used : IndexRebuildCancelToken(org.apache.ignite.internal.processors.query.schema.IndexRebuildCancelToken) SchemaOperationClientFuture(org.apache.ignite.internal.processors.query.schema.SchemaOperationClientFuture) SchemaAbstractDiscoveryMessage(org.apache.ignite.internal.processors.query.schema.message.SchemaAbstractDiscoveryMessage) GridFutureAdapter(org.apache.ignite.internal.util.future.GridFutureAdapter) GridFinishedFuture(org.apache.ignite.internal.util.future.GridFinishedFuture) IgniteCacheObjectProcessor(org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor) CacheQueryExecutedEvent(org.apache.ignite.events.CacheQueryExecutedEvent) Map(java.util.Map) SqlQuery(org.apache.ignite.cache.query.SqlQuery) Cache(javax.cache.Cache) CacheQueryFuture(org.apache.ignite.internal.processors.cache.query.CacheQueryFuture) Objects.isNull(java.util.Objects.isNull) QueryBinaryProperty(org.apache.ignite.internal.processors.query.property.QueryBinaryProperty) TOPIC_SCHEMA(org.apache.ignite.internal.GridTopic.TOPIC_SCHEMA) BinaryMetadata(org.apache.ignite.internal.binary.BinaryMetadata) IndexBuildStatusStorage(org.apache.ignite.internal.processors.query.aware.IndexBuildStatusStorage) IndexProcessor(org.apache.ignite.internal.cache.query.index.IndexProcessor) IgniteInClosure(org.apache.ignite.lang.IgniteInClosure) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) SchemaAlterTableDropColumnOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperation) Set(java.util.Set) CacheDataRow(org.apache.ignite.internal.processors.cache.persistence.CacheDataRow) Serializable(java.io.Serializable) QueryCursor(org.apache.ignite.cache.query.QueryCursor) SchemaIndexCreateOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation) GridCacheContext(org.apache.ignite.internal.processors.cache.GridCacheContext) SchemaOperationWorker(org.apache.ignite.internal.processors.query.schema.SchemaOperationWorker) SchemaIndexCacheVisitor(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitor) SchemaOperationManager(org.apache.ignite.internal.processors.query.schema.SchemaOperationManager) SchemaAbstractOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation) IgniteBiPredicate(org.apache.ignite.lang.IgniteBiPredicate) IgniteThread(org.apache.ignite.thread.IgniteThread) U(org.apache.ignite.internal.util.typedef.internal.U) SchemaOperationStatusMessage(org.apache.ignite.internal.processors.query.schema.message.SchemaOperationStatusMessage) IgniteOutClosureX(org.apache.ignite.internal.util.lang.IgniteOutClosureX) INDEXING(org.apache.ignite.internal.IgniteComponentType.INDEXING) ArrayList(java.util.ArrayList) GridKernalContext(org.apache.ignite.internal.GridKernalContext) LinkedHashMap(java.util.LinkedHashMap) ClusterNode(org.apache.ignite.cluster.ClusterNode) PlatformContext(org.apache.ignite.internal.processors.platform.PlatformContext) IndexQueryProcessor(org.apache.ignite.internal.cache.query.index.IndexQueryProcessor) GridDhtPartitionsExchangeFuture(org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture) CacheWriteSynchronizationMode(org.apache.ignite.cache.CacheWriteSynchronizationMode) CODE_COLUMN_EXISTS(org.apache.ignite.internal.processors.query.schema.SchemaOperationException.CODE_COLUMN_EXISTS) SchemaAddQueryEntityOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperation) T3(org.apache.ignite.internal.util.typedef.T3) T2(org.apache.ignite.internal.util.typedef.T2) BinaryType(org.apache.ignite.binary.BinaryType) MvccSnapshot(org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot) CacheConfiguration(org.apache.ignite.configuration.CacheConfiguration) SchemaOperationException(org.apache.ignite.internal.processors.query.schema.SchemaOperationException) Binarylizable(org.apache.ignite.binary.Binarylizable) IgniteDataStreamer(org.apache.ignite.IgniteDataStreamer) GridProcessorAdapter(org.apache.ignite.internal.processors.GridProcessorAdapter) CacheObjectContext(org.apache.ignite.internal.processors.cache.CacheObjectContext) SchemaAlterTableAddColumnOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation) IgniteUuid(org.apache.ignite.lang.IgniteUuid) CacheMode(org.apache.ignite.cache.CacheMode) DynamicCacheChangeBatch(org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch) DynamicCacheChangeRequest(org.apache.ignite.internal.processors.cache.DynamicCacheChangeRequest) CacheAtomicityMode(org.apache.ignite.cache.CacheAtomicityMode) IgniteInternalFuture(org.apache.ignite.internal.IgniteInternalFuture) BinaryObject(org.apache.ignite.binary.BinaryObject) DiscoveryDataBag(org.apache.ignite.spi.discovery.DiscoveryDataBag) CacheKeyConfiguration(org.apache.ignite.cache.CacheKeyConfiguration) SqlFieldsQuery(org.apache.ignite.cache.query.SqlFieldsQuery) IndexingQueryFilter(org.apache.ignite.spi.indexing.IndexingQueryFilter) IgniteSystemProperties(org.apache.ignite.IgniteSystemProperties) SB(org.apache.ignite.internal.util.typedef.internal.SB) Collections.singleton(java.util.Collections.singleton) QueryEntity(org.apache.ignite.cache.QueryEntity) PARTITIONED(org.apache.ignite.cache.CacheMode.PARTITIONED) BinaryUtils.typeByClass(org.apache.ignite.internal.binary.BinaryUtils.typeByClass) Collectors.toSet(java.util.stream.Collectors.toSet) IgniteFuture(org.apache.ignite.lang.IgniteFuture) IdentityHashMap(java.util.IdentityHashMap) Collection(java.util.Collection) IgniteException(org.apache.ignite.IgniteException) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) UUID(java.util.UUID) CacheObject(org.apache.ignite.internal.processors.cache.CacheObject) IndexQueryResult(org.apache.ignite.internal.cache.query.index.IndexQueryResult) IgniteCacheOffheapManager(org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManager) GridSpinBusyLock(org.apache.ignite.internal.util.GridSpinBusyLock) IgniteBiTuple(org.apache.ignite.lang.IgniteBiTuple) ExchangeActions(org.apache.ignite.internal.processors.cache.ExchangeActions) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) IndexRebuildFutureStorage(org.apache.ignite.internal.processors.query.aware.IndexRebuildFutureStorage) CU(org.apache.ignite.internal.util.typedef.internal.CU) KeyCacheObject(org.apache.ignite.internal.processors.cache.KeyCacheObject) Objects.nonNull(java.util.Objects.nonNull) FieldsQueryCursor(org.apache.ignite.cache.query.FieldsQueryCursor) NodeStoppingException(org.apache.ignite.internal.NodeStoppingException) GridCacheAdapter(org.apache.ignite.internal.processors.cache.GridCacheAdapter) QueryCursorImpl(org.apache.ignite.internal.processors.cache.QueryCursorImpl) PlatformProcessor(org.apache.ignite.internal.processors.platform.PlatformProcessor) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) GridTimeoutProcessor(org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor) LT(org.apache.ignite.internal.util.typedef.internal.LT) SchemaIndexCacheVisitorImpl(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorImpl) ConcurrentMap(java.util.concurrent.ConcurrentMap) HashSet(java.util.HashSet) IndexQueryDesc(org.apache.ignite.internal.processors.cache.query.IndexQueryDesc) Collections.newSetFromMap(java.util.Collections.newSetFromMap) SchemaIndexCacheVisitorClosure(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure) SchemaFinishDiscoveryMessage(org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage) CacheException(javax.cache.CacheException) LinkedList(java.util.LinkedList) GridPlainOutClosure(org.apache.ignite.internal.util.lang.GridPlainOutClosure) GridMessageListener(org.apache.ignite.internal.managers.communication.GridMessageListener) F(org.apache.ignite.internal.util.typedef.F) SchemaProposeDiscoveryMessage(org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessage) SchemaIndexDropOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperation) JdkMarshaller(org.apache.ignite.marshaller.jdk.JdkMarshaller) Iterator(java.util.Iterator) Collections.emptySet(java.util.Collections.emptySet) AffinityTopologyVersion(org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion) DynamicCacheDescriptor(org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor) GridCacheContextInfo(org.apache.ignite.internal.processors.cache.GridCacheContextInfo) IgniteQueryErrorCode(org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode) GridCloseableIterator(org.apache.ignite.internal.util.lang.GridCloseableIterator) CacheObjectBinaryProcessorImpl(org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl) GridBoundedConcurrentLinkedHashSet(org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashSet) SCHEMA_POOL(org.apache.ignite.internal.managers.communication.GridIoPolicy.SCHEMA_POOL) GridCacheQueryType(org.apache.ignite.internal.processors.cache.query.GridCacheQueryType) BinaryObjectException(org.apache.ignite.binary.BinaryObjectException) BinaryUtils.fieldTypeName(org.apache.ignite.internal.binary.BinaryUtils.fieldTypeName) Collections(java.util.Collections) QueryIndex(org.apache.ignite.cache.QueryIndex) GridClosureException(org.apache.ignite.internal.util.lang.GridClosureException) EVT_CACHE_QUERY_EXECUTED(org.apache.ignite.events.EventType.EVT_CACHE_QUERY_EXECUTED) SchemaIndexDropOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperation) IgniteException(org.apache.ignite.IgniteException) GridFutureAdapter(org.apache.ignite.internal.util.future.GridFutureAdapter) SchemaIndexCacheVisitorClosure(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure) SchemaAlterTableDropColumnOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperation) SchemaOperationException(org.apache.ignite.internal.processors.query.schema.SchemaOperationException) SchemaIndexCacheVisitor(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitor) SchemaIndexCreateOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation) SchemaIndexCacheVisitorImpl(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorImpl) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) SchemaOperationException(org.apache.ignite.internal.processors.query.schema.SchemaOperationException) IgniteException(org.apache.ignite.IgniteException) NodeStoppingException(org.apache.ignite.internal.NodeStoppingException) CacheException(javax.cache.CacheException) BinaryObjectException(org.apache.ignite.binary.BinaryObjectException) GridClosureException(org.apache.ignite.internal.util.lang.GridClosureException) SchemaAddQueryEntityOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperation) SchemaAlterTableAddColumnOperation(org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation) Collection(java.util.Collection) GridCacheContextInfo(org.apache.ignite.internal.processors.cache.GridCacheContextInfo) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) IdentityHashMap(java.util.IdentityHashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) ConcurrentMap(java.util.concurrent.ConcurrentMap) Collections.newSetFromMap(java.util.Collections.newSetFromMap)

Example 2 with SchemaIndexCacheVisitorClosure

use of org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure in project ignite by apache.

the class IgniteH2Indexing method dynamicIndexCreate.

/**
 * {@inheritDoc}
 */
@Override
public void dynamicIndexCreate(final String schemaName, final String tblName, final QueryIndexDescriptorImpl idxDesc, boolean ifNotExists, SchemaIndexCacheVisitor cacheVisitor) throws IgniteCheckedException {
    // Locate table.
    H2Schema schema = schemas.get(schemaName);
    H2TableDescriptor desc = (schema != null ? schema.tableByName(tblName) : null);
    if (desc == null)
        throw new IgniteCheckedException("Table not found in internal H2 database [schemaName=" + schemaName + ", tblName=" + tblName + ']');
    GridH2Table h2Tbl = desc.table();
    // Create index.
    final GridH2IndexBase h2Idx = desc.createUserIndex(idxDesc);
    h2Tbl.proposeUserIndex(h2Idx);
    try {
        // Populate index with existing cache data.
        final GridH2RowDescriptor rowDesc = h2Tbl.rowDescriptor();
        SchemaIndexCacheVisitorClosure clo = new SchemaIndexCacheVisitorClosure() {

            @Override
            public void apply(CacheDataRow row) throws IgniteCheckedException {
                GridH2Row h2Row = rowDesc.createRow(row);
                h2Idx.putx(h2Row);
            }
        };
        cacheVisitor.visit(clo);
        // At this point index is in consistent state, promote it through H2 SQL statement, so that cached
        // prepared statements are re-built.
        String sql = H2Utils.indexCreateSql(desc.fullTableName(), h2Idx, ifNotExists);
        executeSql(schemaName, sql);
    } catch (Exception e) {
        // Rollback and re-throw.
        h2Tbl.rollbackUserIndex(h2Idx.getName());
        throw e;
    }
}
Also used : CacheDataRow(org.apache.ignite.internal.processors.cache.persistence.CacheDataRow) GridH2IndexBase(org.apache.ignite.internal.processors.query.h2.opt.GridH2IndexBase) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) GridH2RowDescriptor(org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor) GridH2Table(org.apache.ignite.internal.processors.query.h2.opt.GridH2Table) GridH2Row(org.apache.ignite.internal.processors.query.h2.opt.GridH2Row) SchemaIndexCacheVisitorClosure(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure) IgniteSystemProperties.getString(org.apache.ignite.IgniteSystemProperties.getString) QueryCancelledException(org.apache.ignite.cache.query.QueryCancelledException) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) SqlParseException(org.apache.ignite.internal.sql.SqlParseException) SQLException(java.sql.SQLException) IgniteException(org.apache.ignite.IgniteException) CacheException(javax.cache.CacheException) IgniteSQLException(org.apache.ignite.internal.processors.query.IgniteSQLException)

Example 3 with SchemaIndexCacheVisitorClosure

use of org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure in project ignite by apache.

the class IndexesRebuildTask method rebuild.

/**
 * Start to rebuild.
 *
 * @param cctx Cache context.
 * @param force Force rebuild indexes.
 * @return A future of rebuilding cache indexes.
 */
@Nullable
public IgniteInternalFuture<?> rebuild(GridCacheContext<?, ?> cctx, boolean force, IndexRebuildCancelToken cancelTok) {
    assert cctx != null;
    if (!CU.affinityNode(cctx.localNode(), cctx.config().getNodeFilter()))
        return null;
    IgnitePageStoreManager pageStore = cctx.shared().pageStore();
    SchemaIndexCacheVisitorClosure clo;
    String cacheName = cctx.name();
    if (pageStore == null || !pageStore.hasIndexStore(cctx.groupId())) {
        boolean mvccEnabled = cctx.mvccEnabled();
        // If there are no index store, rebuild all indexes.
        clo = row -> cctx.queries().store(row, null, mvccEnabled);
    } else {
        Collection<InlineIndex> toRebuild = cctx.kernalContext().indexProcessor().treeIndexes(cctx, !force);
        if (F.isEmpty(toRebuild))
            return null;
        clo = row -> cctx.kernalContext().indexProcessor().store(toRebuild, row, null, false);
    }
    // Closure prepared, do rebuild.
    cctx.kernalContext().query().markAsRebuildNeeded(cctx, true);
    GridFutureAdapter<Void> rebuildCacheIdxFut = new GridFutureAdapter<>();
    // To avoid possible data race.
    GridFutureAdapter<Void> outRebuildCacheIdxFut = new GridFutureAdapter<>();
    IgniteLogger log = cctx.kernalContext().grid().log();
    // An internal future for the ability to cancel index rebuilding.
    SchemaIndexCacheFuture intRebFut = new SchemaIndexCacheFuture(cancelTok);
    SchemaIndexCacheFuture prevIntRebFut = idxRebuildFuts.put(cctx.cacheId(), intRebFut);
    // Check that the previous rebuild is completed.
    assert prevIntRebFut == null;
    cctx.kernalContext().query().onStartRebuildIndexes(cctx);
    rebuildCacheIdxFut.listen(fut -> {
        Throwable err = fut.error();
        if (err == null) {
            try {
                cctx.kernalContext().query().markAsRebuildNeeded(cctx, false);
            } catch (Throwable t) {
                err = t;
            }
        }
        if (err != null)
            U.error(log, "Failed to rebuild indexes for cache: " + cacheName, err);
        else
            cctx.kernalContext().query().onFinishRebuildIndexes(cctx);
        idxRebuildFuts.remove(cctx.cacheId(), intRebFut);
        intRebFut.onDone(err);
        outRebuildCacheIdxFut.onDone(err);
    });
    startRebuild(cctx, rebuildCacheIdxFut, clo, intRebFut.cancelToken());
    return outRebuildCacheIdxFut;
}
Also used : IgnitePageStoreManager(org.apache.ignite.internal.pagemem.store.IgnitePageStoreManager) InlineIndex(org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndex) GridFutureAdapter(org.apache.ignite.internal.util.future.GridFutureAdapter) SchemaIndexCacheFuture(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheFuture) SchemaIndexCacheVisitorClosure(org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure) IgniteLogger(org.apache.ignite.IgniteLogger) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

CacheException (javax.cache.CacheException)2 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)2 IgniteException (org.apache.ignite.IgniteException)2 SchemaIndexCacheVisitorClosure (org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitorClosure)2 Serializable (java.io.Serializable)1 SQLException (java.sql.SQLException)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 Collections.emptySet (java.util.Collections.emptySet)1 Collections.newSetFromMap (java.util.Collections.newSetFromMap)1 Collections.singleton (java.util.Collections.singleton)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 IdentityHashMap (java.util.IdentityHashMap)1 Iterator (java.util.Iterator)1 LinkedHashMap (java.util.LinkedHashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Map (java.util.Map)1