具有RAM索引的Grails可搜索插件集在部署到Cloud Foundry时丢失

具有RAM索引的Grails可搜索插件集在部署到Cloud Foundry时丢失,grails,cloud-foundry,searchable,grails-searchable,searchable-plugin,Grails,Cloud Foundry,Searchable,Grails Searchable,Searchable Plugin,我正在向CloudFoundry部署一个Grails应用程序,其中可搜索插件“compassConnection”设置为使用RAM索引。问题是CloudFoundry应用了一些神奇的自动配置,将“compassConnection”设置为使用基于文件的索引 如果我使用的是基于磁盘的索引,并且CloudFoundry需要重新配置以使其在其环境中工作,那么这将很好,但我希望RAM索引配置保持原样 你知道我该怎么做吗 谢谢, Olly我在浏览AbstractCloudBeanPostprocessor

我正在向CloudFoundry部署一个Grails应用程序,其中可搜索插件“compassConnection”设置为使用RAM索引。问题是CloudFoundry应用了一些神奇的自动配置,将“compassConnection”设置为使用基于文件的索引

如果我使用的是基于磁盘的索引,并且CloudFoundry需要重新配置以使其在其环境中工作,那么这将很好,但我希望RAM索引配置保持原样

你知道我该怎么做吗

谢谢,
Olly

我在浏览AbstractCloudBeanPostprocessor中的CloudFoundry插件源代码后找到了问题的原因。填充compass连接的方法不会检查它是否是RAM索引,而是盲目地将其设置到磁盘上的某个位置

    /**
 * Update the location of the Searchable Lucene index.
 * @param beanFactory the Spring bean factory
 * @param appConfig the application config
 */
protected void fixCompass(ConfigurableListableBeanFactory beanFactory, ConfigObject appConfig) {
    def compassBean = beanFactory.getBeanDefinition('compass')
    String indexLocation = getCompassIndexRootLocation(appConfig) + '/searchable-index'
    appConfig.searchable.compassConnection = indexLocation
    compassBean.propertyValues.addPropertyValue 'compassConnection', indexLocation
    log.debug "Updated Compass connection details: $indexLocation"
}

我认为这应该真正检查RAM索引的存在,并且只将其设置为磁盘位置。一个可能的解决方法是创建我自己的BeanDefinitionRegistryPostProcessor,并撤销cloud foundry插件的功能。

我认为CF没有针对可搜索插件的配置进行定制。这只是一个上传的库。它自动重新配置CF服务的数据源,如MongoDB、MySQL、PostgreSQL等。您是否绑定了任何此类服务?cloud foundry插件文档中有一些内容说它确实配置了Lucene索引(-search for‘Searchable’)。是真正的cloud foundry插件在执行此配置,还是cloud foundry本身。稍后我将删除这个插件进行测试,因为我不使用它。啊,不,等等,我当然需要这个插件来进行Mysql自动配置。所以我认为问题在于CloudFoundry Grails插件。有什么想法吗?这很有帮助,奥利!我建议您向Grails JIRA:提交请求。虽然我想知道为什么没有文件索引?