コード例 #1
0
 private boolean createDefinedIndexesForPR(
     HashSet<Index> indexes,
     PartitionedRegion region,
     HashSet<IndexCreationData> icds,
     HashMap<String, Exception> exceptionsMap) {
   try {
     indexes.addAll(((PartitionedRegion) region).createIndexes(false, icds));
   } catch (IndexCreationException e1) {
     logger.info(
         LocalizedMessage.create(
             LocalizedStrings
                 .DefaultQueryService_EXCEPTION_WHILE_CREATING_INDEX_ON_PR_DEFAULT_QUERY_PROCESSOR),
         e1);
   } catch (CacheException e1) {
     logger.info(
         LocalizedMessage.create(
             LocalizedStrings
                 .DefaultQueryService_EXCEPTION_WHILE_CREATING_INDEX_ON_PR_DEFAULT_QUERY_PROCESSOR),
         e1);
     return true;
   } catch (ForceReattemptException e1) {
     logger.info(
         LocalizedMessage.create(
             LocalizedStrings
                 .DefaultQueryService_EXCEPTION_WHILE_CREATING_INDEX_ON_PR_DEFAULT_QUERY_PROCESSOR),
         e1);
     return true;
   } catch (MultiIndexCreationException e) {
     exceptionsMap.putAll(e.getExceptionsMap());
     return true;
   }
   return false;
 }
コード例 #2
0
  private boolean createDefinedIndexesForReplicatedRegion(
      HashSet<Index> indexes,
      Region region,
      Set<IndexCreationData> icds,
      HashMap<String, Exception> exceptionsMap) {
    boolean throwException = false;
    for (IndexCreationData icd : icds) {
      try {
        // First step is creating all the defined indexes. Do this only if
        // the region is not PR. For PR creation and population is done in
        // the PartitionedRegion#createDefinedIndexes
        indexes.add(
            createIndex(
                icd.getIndexName(),
                icd.getIndexType(),
                icd.getIndexExpression(),
                icd.getIndexFromClause(),
                icd.getIndexImportString(),
                false,
                region));
      } catch (Exception ex) {
        // If an index creation fails, add the exception to the map and
        // continue creating rest of the indexes.The failed indexes will
        // be removed from the IndexManager#indexes map by the createIndex
        // method so that those indexes will not be populated in the next
        // step.
        if (logger.isDebugEnabled()) {
          logger.debug("Index creation failed, {}, {}", icd.getIndexName(), ex.getMessage(), ex);
        }
        exceptionsMap.put(icd.getIndexName(), ex);
        throwException = true;
      }
    }
    if (IndexManager.testHook != null) {
      IndexManager.testHook.hook(13);
    }
    // Second step is iterating over REs and populating all the created
    // indexes
    IndexManager indexManager = IndexUtils.getIndexManager(region, false);
    if (indexManager == null) {
      for (IndexCreationData icd : icds) {
        exceptionsMap.put(
            icd.getIndexName(),
            new IndexCreationException("Index Creation Failed due to region destroy"));
      }
      return true;
    }

    if (indexes.size() > 0) {
      try {
        indexManager.populateIndexes(indexes);
      } catch (MultiIndexCreationException ex) {
        exceptionsMap.putAll(ex.getExceptionsMap());
        throwException = true;
      }
    }
    return throwException;
  }