gpt4 book ai didi

java - MassIndexer.createIndexer() 在索引多个实体类型时卡住

转载 作者:行者123 更新时间:2023-11-30 11:41:47 26 4
gpt4 key购买 nike

为了这个问题的目的,我有两个业务类:

@Entity
@Indexed
public class MyClassOne implements MyInterface {

@Id
private Integer id;

@OneToMany(orphanRemoval = true)
@Cascade(CascadeType.ALL)
private List<MyClassTwo> myClassTwos;

@Field
private String someField;
}

@Entity
@Indexed
public class MyClassTwo implements MyInterface {

@Id
private Integer id;

@Field
private String someField;
}

然后我使用以下代码创建索引(如 Hibernate Search 文档中所建议):

Search.getFullTextSession(session).createIndexer(MyClassOne.class, MyClassTwo.class).startAndWait();

问题是,这卡住了。 MassIndexer.createIndexer() 无限期挂起,我什么也得不到。

如果我删除其中一个 Class 参数,那么剩余的类将被索引并且一切正常 - 当我尝试同时索引两个实体时,这只是一个问题。我的理解是 hibernate 默认为每个实体创建一个单独的索引,我当然没有做任何配置来改变它。

为清楚起见,我删除了@AnalyzerDef、@Boost 注释以及@Field 和@Indexed 注释参数,但删除这些参数对根本问题没有影响。我留下了两个类实现相同接口(interface)的事实,并且一个包含另一个的列表(尽管请注意这不是 @IndexEmbedded)以防相关。

(我还发现一个线程暗示线程池大小是个问题所以我将它增加到 50 但没有成功)

大概我做错了一些明显的错误,但我没有想法 - 谁能帮忙?

谢谢

最佳答案

当它用完数据库连接时,它似乎会卡住;它有效地依赖于数据库池库的连接超时来“释放”。

与其增加线程池,不如降低它,以免耗尽连接;每个线程将使用一个。或者,如果可以,提高允许的数据库最大连接数会更有效。

我已经打开了一个 JIRA 问题来通过某种方式检测它来解决这个问题,最坏的情况最好记录下来。

关于java - MassIndexer.createIndexer() 在索引多个实体类型时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com