【发布时间】:2017-05-24 08:17:39
【问题描述】:
这是JPA/Hibernate hangs on production during EntityManagerFactory creation的跟进
我设法在“挂起”状态下获得了线程转储,我发现问题与文件系统列表操作有关。
一般来说,在应用程序引导期间,此进程可能会在此状态下挂起数分钟(约 30 分钟)。有任何解决方法或解决方法吗??
"main" #1 prio=5 os_prio=0 tid=0x00000000010c9000 nid=0x2c73 runnable [0x00007f4c928f5000]
java.lang.Thread.State: RUNNABLE
at java.io.UnixFileSystem.list(Native Method)
at java.io.File.list(File.java:1122)
at java.io.File.listFiles(File.java:1207)
at org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory(ExplodedArchiveDescriptor.java:105)
at org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.processDirectory(ExplodedArchiveDescriptor.java:118)
at org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor.visitArchive(ExplodedArchiveDescriptor.java:54)
at org.hibernate.boot.archive.scan.spi.AbstractScannerImpl.scan(AbstractScannerImpl.java:47)
at org.hibernate.boot.model.process.internal.ScanningCoordinator.coordinateScan(ScanningCoordinator.java:75)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.prepare(MetadataBuildingProcess.java:98)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:227)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:169)
at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:36)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:181)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:129)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
【问题讨论】:
-
如果您包含更多信息,它可能会帮助人们帮助您。这是否发生在工作站/VM/Docker 上?文件系统(例如 NFS)有什么特别之处吗?任何 SE Linux 扩展?还有什么你能想到的“奇怪”吗? Java 版本/Linux 发行版?我在 Linux 上(使用 Java、Hibernate)进行日常开发,这不会发生,但在极少数情况下会发生其他奇怪的事情!
-
我有类似的堆栈跟踪问题,但我看到堆栈跟踪以及 OutOfMemoryError。相同的应用程序部署在 jar 文件中,而不是文件系统上的 .class 文件中,没问题。但是在我直接部署 .class 文件的开发服务器上,我看到了 OOME。 @Antoniossss 您在此期间对此有何进一步了解?
-
@marc82ch 不幸的是我现在不记得了,我已经转移到不同的项目;(
-
我在我的情况下想通了,问题是 . (当前目录)是类路径的一部分,我在一个相当大的目录中启动程序。 Hibernate 可能需要扫描整个类路径目录结构中的所有文件以查找实体类。我不完全理解它,但可能是这样的。
-
是的。我现在记得,日志文件目录位于类路径中。把它移出来解决了这个问题!我很高兴你也找到了它。