IndexerException/NullPointerException由于在蚂蚁更新期间索引后台时缺少bean

2020-08-21 11:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 这是我无法解决的从6.3...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

这是我无法解决的从6.3-> 6.7移植项目的唯一错误。 这出现在迁移6.6-> 6.7

的最后一步

如果我不为后台办公室重新编制索引,那么在启动Hybris之后,在控制台中会出现很多异常:

  [java] [m de.hybris.platform.solrfacetsearch.solr.exceptions.SolrIndexNotFoundException:de.hybris.platform.servicelayer.exceptions.UnknownIdentifierException:找不到活动索引:{indexedType = SolrIndexedTypeModel(8796093057183 @  2),active = true,facetSearchConfig = SolrFacetSearchConfigModel(8796093057176 @ 1)}
       [java] de.hybris.platform.solrfacetsearch.solr.impl.DefaultSolrIndexService.getActiveIndex(DefaultSolrIndexService.java:218)〜[solrfacetsearchserver.jar :?]
       [java] com.hybris.backoffice.solrsearch.indexer.cron.BackofficeSolrIndexerDeleteJob.synchronizeIndexForType(BackofficeSolrIndexerDeleteJob.java:65)〜[backofficesolrsearchserver.jar :?]
       [java] com.hybris.backoffice.solrsearch.indexer.cron.AbstractBackofficeSolrIndexerJob.synchronizeIndexForConfig(AbstractBackofficeSolrIndexerJob.java:110)〜[backofficesolrsearchserver.jar :?]
       [java] com.hybris.backoffice.solrsearch.indexer.cron.AbstractBackofficeSolrIndexerJob.synchronizeIndexAndRemoveModifiedItems(AbstractBackofficeSolrIndexerJob.java:78)[backofficesolrsearchserver.jar :?]
       [java] com.hybris.backoffice.solrsearch.indexer.cron.AbstractBackofficeSolrIndexerJob.performIndexingJob(AbstractBackofficeSolrIndexerJob.java:56)[backofficesolrsearchserver.jar :?]
       [java]位于de.hybris.platform.solrfacetsearch.indexer.cron.AbstractIndexerJob.perform(AbstractIndexerJob.java:40)[solrfacetsearchserver.jar :?]
       [java] de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob.performCronJob(ServicelayerJob.java:38)[processingserver.jar :?]
       [java]位于de.hybris.platform.cronjob.jalo.Job.execute(Job.java:1390)[processingserver.jar :?]
       [java]位于de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:814)[processingserver.jar :?]
       [java]位于de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:767)[processingserver.jar :?]
       [java]位于de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:686)[processingserver.jar :?]
       [java] de.hybris.platform.util.threadpool.PoolableThread.internalRun(PoolableThread.java:208)[coreserver.jar :?]
       [java]位于de.hybris.platform.core.threadregistry.RegistrableThread.run(RegistrableThread.java:134)[coreserver.jar :?]
       [java]原因:de.hybris.platform.servicelayer.exceptions.UnknownIdentifierException:找不到活动索引:{indexedType = SolrIndexedTypeModel(8796093057183 @ 2),active = true,facetSearchConfig = SolrFacetSearchConfigConfigModel(8796093057176 @ 1)}
       [java]位于de.hybris.platform.servicelayer.util.ServicesUtil.validateSingleResultWithType(ServicesUtil.java:88)〜[coreserver.jar :?]
       [java]位于de.hybris.platform.servicelayer.util.ServicesUtil.validateIfSingleResult(ServicesUtil.java:47)〜[coreserver.jar :?]
       [java] de.hybris.platform.solrfacetsearch.daos.impl.DefaultSolrIndexDao.findActiveIndexByConfigAndType(DefaultSolrIndexDao.java:73)〜[solrfacetsearchserver.jar :?]
       [java] de.hybris.platform.solrfacetsearch.solr.impl.DefaultSolrIndexService.getActiveIndex(DefaultSolrIndexService.java:214)〜[solrfacetsearchserver.jar :?]
       [java] ...另外12个
 
  

所以我们有一些代码可以为产品和内容目录索引重新编制索引,因此我决定扩展代码以也为后台重新编制索引:

 公共类MyInitialDataSystemSetup扩展了AbstractSystemSetup {
      ....
      私有静态最终List  SOLR_INDEXES = Lists.newArrayList(" Backoffice的Solr Config",.....);
 
  .....
              对于(String solrIndex:SOLR_INDEXES){
                  executeSolrIndexerCronJob(solrIndex,true);
              }
      }
  }


  

这对所有索引都适用,后台办公室除外。 名称为" Backoffice的Solr Config"必须正确,因为它适用于其他索引,并且它们在表SolrFacetSearchConfig中显示相同的名称

  $ backofficeSFCName = Backoffice的Solr配置;
  INSERT_UPDATE SolrFacetSearchConfig; 名称[unique = true]; 描述;  $ document;  $ solrSearchConfig; 货币(isocode); 语言(isocode);  $ solrValueRangeSets;  $ solrIndexedTypes;  $ solrServerConfig;  $ solrIndexConfig;  indexNamePrefix
  ;  $ backofficeSFCName;  $ backofficeSFCName;  ;  BSFC;  EUR,USD;  de,en;  backofficePriceRanges;  BackofficeProduct; 默认;  indexConfig-Backoffice; 后台
 
  

但是仅对于后台索引,我会发生此崩溃:

  [java] [m [1; 31mERROR [solr索引器线程]] [DefaultIndexerWorker] [Indexer worker 0(对Backoffice/Product_backoffice_product的Solr Config进行完全索引操作)]由于失败而无法处理索引项 索引到具有PK 8796093054977的项目:无法通过解析器:backofficeValueResolver解析具有PK:8796093054977的项目的值,对于属性:[_backofficeLabel,名称],原因:null
       [java] [m de.hybris.platform.solrfacetsearch.indexer.exceptions.IndexerException:无法使用PK 8796093054977索引项目:无法通过解析器:backofficeValueResolver来解析PK:8796093054977的项目的值,用于属性:[__backofficeLabel, 名称],原因:空
       [java] de.hybris.platform.solrfacetsearch.indexer.impl.DefaultIndexer.handleError(DefaultIndexer.java:263)〜[solrfacetsearchserver.jar :?]
       [java] at de.hybris.platform.solrfacetsearch.indexer.impl.DefaultIndexer.indexItems(DefaultIndexer.java:124)〜[solrfacetsearchserver.jar :?]
       [java] de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerBatchStrategy.executeIndexerOperation(DefaultIndexerBatchStrategy.java:253)〜[solrfacetsearchserver.jar :?]
       [java]位于de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerBatchStrategy.execute(DefaultIndexerBatchStrategy.java:218)〜[solrfacetsearchserver.jar :?]
       [java] at de.hybris.platform.solrfacetsearch.indexer.workers.impl.DefaultIndexerWorker.doRun(DefaultIndexerWorker.java:202)[solrfacetsearchserver.jar :?]
       [java] at de.hybris.platform.solrfacetsearch.indexer.workers.impl.DefaultIndexerWorker.run(DefaultIndexerWorker.java:158)[solrfacetsearchserver.jar :?]
       [java] at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)[?:1.8.0_172]
       [java] at java.util.concurrent.FutureTask.run(FutureTask.java:266)[?:1.8.0_172]
       [java] at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)[?:1.8.0_172]
       [java] at java.util.concurrent.FutureTask.run(FutureTask.java:266)[?:1.8.0_172]
       [java] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[?:1.8.0_172]
       [java] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)[?:1.8.0_172]
       [java] at java.lang.Thread.run(Thread.java:748)[?:1.8.0_172]
       [java]原因:de.hybris.platform.solrfacetsearch.config.exceptions.FieldValueProviderException:无法通过解析器:backofficeValueResolver解析具有PK:8796093054977的项的值,对于属性:[_backofficeLabel,名称],原因:null
       [java] de.hybris.platform.solrfacetsearch.indexer.impl.DefaultSolrDocumentFactory.handleError(DefaultSolrDocumentFactory.java:523)〜[solrfacetsearchserver.jar :?]
       [java] de.hybris.platform.solrfacetsearch.indexer.impl.DefaultSolrDocumentFactory.addIndexedPropertyFieldsForNewApi(DefaultSolrDocumentFactory.java:356)〜[solrfacetsearchserver.jar :?]
       [java] at de.hybris.platform.solrfacetsearch.indexer.impl.DefaultSolrDocumentFactory.addIndexedPropertyFields(DefaultSolrDocumentFactory.java:298)〜[solrfacetsearchserver.jar :?]
       [java] de.hybris.platform.solrfacetsearch.indexer.impl.DefaultSolrDocumentFactory.createInputDocument(DefaultSolrDocumentFactory.java:191)〜[solrfacetsearchserver.jar :?]
       [java] at de.hybris.platform.solrfacetsearch.indexer.impl.DefaultIndexer.indexItems(DefaultIndexer.java:118)〜[solrfacetsearchserver.jar :?]
       [java] ...另外11个
       [java]原因:java.lang.NullPointerException
       [java] com.hybris.backoffice.solrsearch.resolvers.BackofficeValueResolver.addBackofficeSpecificFields(BackofficeValueResolver.java:64)〜[backofficesolrsearchserver.jar :?]
       [java] com.hybris.backoffice.solrsearch.resolvers.BackofficeValueResolver.addFieldValues(BackofficeValueResolver.java:53)〜[backofficesolrsearchserver.jar :?]
       [java]位于de.hybris.platform.solrfacetsearch.provider.impl.AbstractValueResolver.resolve(AbstractValueResolver.java:132)〜[solrfacetsearchserver.jar :?]
       [java] at de.hybris.platform.solrfacetsearch.indexer.impl.DefaultSolrDocumentFactory.addIndexedPropertyFieldsForNewApi(DefaultSolrDocumentFactory.java:344)〜[solrfacetsearchserver.jar :?]
       [java] at de.hybris.platform.solrfacetsearch.indexer.impl.DefaultSolrDocumentFactory.addIndexedPropertyFields(DefaultSolrDocumentFactory.java:298)〜[solrfacetsearchserver.jar :?]
       [java] de.hybris.platform.solrfacetsearch.indexer.impl.DefaultSolrDocumentFactory.createInputDocument(DefaultSolrDocumentFactory.java:191)〜[solrfacetsearchserver.jar :?]
       [java] at de.hybris.platform.solrfacetsearch.indexer.impl.DefaultIndexer.indexItems(DefaultIndexer.java:118)〜[solrfacetsearchserver.jar :?]
       [java] ...另外11个
       [java] [1; 31mERROR [solr索引器线程] [DefaultIndexerWorker] [Indexer worker 0(在Backrice/Product_backoffice_product的Solr Config上进行完全索引操作)]由于无法用PK 8796093054977建立索引项而无法处理索引项: 对于属性:[_ backofficeLabel,名称],通过解析器:backofficeValueResolver解析具有PK的项目的值:87960930054977,原因:null
 
  

该异常在backofficesolrsearchserver.jar////BackofficeValueResolver第64行:

String objectLabel = this.getLabelServiceProxy()。getObjectLabel(model,language);

我无法调试错误,因为奇怪的是,当我在HAC中尝试并执行"初始化"时,没有异常,并且一切正常! 它是在命令行的"蚂蚁初始化"或"蚂蚁更新系统"期间复制的。

但是我想这一定是getLabelServiceProxy()返回null的原因。 这应该由所需的设置器添加。 这是bean的定义:

  
      
          
          
          
          <!-labelService代理由labelServiceProxyExtender设置->
      
  .......
      
      
          
      
  ........
      
      
          
      
 
  

因此,所有bean都在backofficesolrsearch-spring.xml,backofficesolrsearch-backoffice-spring.xml和backoffice-web-spring.xml中定义

我想缺少backoffice-web-spring.xml,但是如何确保添加了它??

感谢您的帮助!!!