vivion32 发表于 2018-11-1 12:40:15

hive2solr问题小结

void initIndex(boolean reload) throws IOException {  
      String indexDir = getNewIndexDir();
  
      boolean indexExists = getDirectoryFactory().exists(indexDir);
  
      boolean firstTime;
  
      synchronized (SolrCore.class) {
  
      firstTime = dirs.add(getDirectoryFactory().normalize(indexDir));
  
      }
  
      boolean removeLocks = solrConfig.unlockOnStartup; // unlockOnStartup = getBool(indexConfigPrefix+"/unlockOnStartup", false); 默认为false
  
      initIndexReaderFactory();
  
      if (indexExists && firstTime && !reload) {
  

  
      Directory dir = directoryFactory.get(indexDir, DirContext.DEFAULT,
  
            getSolrConfig().indexConfig.lockType);
  
      try {
  
          if (IndexWriter.isLocked(dir)) {
  
            if (removeLocks) {
  
            log.warn(
  
                  logid
  
                      + "WARNING: Solr index directory '{}' is locked.Unlocking...",
  
                  indexDir);
  
            IndexWriter.unlock(dir); //解锁
  
            } else {
  
            log.error(logid
  
                  + "Solr index directory '{}' is locked.Throwing exception",
  
                  indexDir);
  
            throw new LockObtainFailedException(
  
                  "Index locked for write for core " + name);
  
            }
  

  
          }
  
      } finally {
  
          directoryFactory.release(dir);
  
      }
  
      }
  
      // Create the index if it doesn't exist.
  
      if(!indexExists) {
  
      log.warn(logid+"Solr index directory '" + new File(indexDir) + "' doesn't exist."
  
                + " Creating new index...");
  
      SolrIndexWriter writer = SolrIndexWriter.create("SolrCore.initIndex", indexDir, getDirectoryFactory(), true,
  
                                                      getLatestSchema(), solrConfig.indexConfig, solrDelPolicy, codec);
  
      writer.close();
  
      }
  
}


页: [1]
查看完整版本: hive2solr问题小结