I use Java 8, Spring Boot and Hibernate Search and it looks like the app startup stops at Lucene index initialization. Tried to use index files previously built with SB 2.2.7 and no success. Also tried to remove all files made by Lucene and give it a fresh start but no success. Although I put everything in a trace log level, nothing came up in log that could help to find out what's going on.
Please see pom.xml and last few log lines below. If needed, I can provide complete trace log.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<groupId>com.thevegcat</groupId>
<artifactId>TheVegCat</artifactId>
<version>0.4.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>The Vegan Catalog</name>
<description>The Best World Vegan Catalog by H.Lo</description>
<developers>
<developer>
<id>HLo</id>
<name>Hrvoje Lončar</name>
<email>[email protected]</email>
</developer>
</developers>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<hibernate.version>5.4.16.Final</hibernate.version>
<groovy-all.version>3.0.4</groovy-all.version>
<junit-jupiter.version>5.6.2</junit-jupiter.version>
<tika-core.version>1.24.1</tika-core.version>
<jsoup.version>1.13.1</jsoup.version>
<hibernate-search-orm.version>5.11.5.Final</hibernate-search-orm.version>
<opencsv.version>5.2</opencsv.version>
<org.eclipse.jdt.annotation.version>2.2.400</org.eclipse.jdt.annotation.version>
<jacoco.version>0.8.5</jacoco.version>
<junit-platform-surefire-provider.version>1.3.2</junit-platform-surefire-provider.version>
<commons-io.version>2.6</commons-io.version>
<urlrewritefilter.version>4.0.4</urlrewritefilter.version>
<json-simple.version>1.1.1</json-simple.version>
</properties>
<dependencies>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy-all.version}</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-orm</artifactId>
<version>${hibernate-search-orm.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>${tika-core.version}</version>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>${urlrewritefilter.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.annotation</artifactId>
<version>${org.eclipse.jdt.annotation.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>${opencsv.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>${json-simple.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>${junit-platform-surefire-provider.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>target/jacoco.exec</dataFile>
<outputDirectory>target/jacoco-ut</outputDirectory>
</configuration>
</execution>
</executions>
<configuration>
<systemPropertyVariables>
<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>
Last few lines from log:
DEBUG org.hibernate.type.EnumType Using NAMED-based conversion for Enum com.thevegcat.app.config.UserRole
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [veg_user]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [veg_user] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [id]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [id] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [date_created]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [date_created] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [date_last_update]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [date_last_update] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [failed_login_attempts]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [failed_login_attempts] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [name]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [name] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [note]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [note] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [password]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [password] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [phone]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [phone] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [status]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [status] in lower case for use in DatabaseMetaData
DEBUG org.hibernate.type.EnumType Using NAMED-based conversion for Enum com.thevegcat.app.user.User$Status
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [time_zone_id]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [time_zone_id] in lower case for use in DatabaseMetaData
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Normalizing identifier quoting for object name [username]
TRACE org.hibernate.engine.jdbc.env.internal.NormalizingIdentifierHelperImpl Rendering unquoted identifier [username] in lower case for use in DatabaseMetaData
TRACE org.hibernate.service.internal.AbstractServiceRegistryImpl Initializing service [role=org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform]
INFO org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
DEBUG org.hibernate.query.spi.NamedQueryRepository Checking 0 named HQL queries
DEBUG org.hibernate.query.spi.NamedQueryRepository Checking 0 named SQL queries
TRACE org.hibernate.search.util.configuration.impl.MaskedProperty found a match for key: [hibernate.search.default.directory_provider] value: filesystem
TRACE org.hibernate.search.util.configuration.impl.MaskedProperty found a match for key: [default.directory_provider] value: filesystem
TRACE org.hibernate.search.util.configuration.impl.MaskedProperty found a match for key: [hibernate.search.default.indexBase] value: F:/storage/lucene
TRACE org.hibernate.search.util.configuration.impl.MaskedProperty found a match for key: [default.indexBase] value: F:/storage/lucene
INFO org.hibernate.search.store.impl.DirectoryProviderHelper HSEARCH000041: Index directory not found, creating: 'F:\storage\lucene\com.thevegcat.app.manufacturer.Manufacturer'
DEBUG org.hibernate.search.store.impl.DirectoryProviderHelper Initialize index: 'F:\storage\lucene\com.thevegcat.app.manufacturer.Manufacturer'
DEBUG org.hibernate.search.backend.impl.lucene.WorkspaceFactory Starting workspace for index com.thevegcat.app.manufacturer.Manufacturer using an exclusive index strategy
DEBUG org.hibernate.search.backend.impl.lucene.SyncWorkProcessor HSEARCH000230: Starting sync consumer thread for index 'com.thevegcat.app.manufacturer.Manufacturer'
DEBUG org.hibernate.search.backend.impl.lucene.WorkspaceHolder HSEARCH000235: Backend for index 'com.thevegcat.app.manufacturer.Manufacturer' started: using a Synchronous batching backend.
WARN org.hibernate.search.indexes.impl.LuceneEmbeddedIndexFamilyImpl HSEARCH000075: Configuration setting hibernate.search.lucene_version was not specified: using LUCENE_CURRENT.
DEBUG org.hibernate.annotations.common.util.StandardClassLoaderDelegateImpl Unable to locate Class [com.thevegcat.app.manufacturer.package-info] using TCCL, falling back to HCANN ClassLoader
DEBUG org.hibernate.search.engine.metadata.impl.AnnotationMetadataProvider package-info not found for package 'com.thevegcat.app.manufacturer'
As of Spring Boot 2.3.0, the default BootstrapMode
for JPA repositories is now "deferred" to improve startup time.
Unfortunately we've discovered that this can have side-effects with Hibernate Search; there's an opened issue against Spring Framework that looks very similar to your project. Feel free to subscribe to this issue for further updates.
In the meantime, you can revert to the previous default with the following configuration property:
spring.data.jpa.repositories.bootstrap-mode=default
I'm sorry you ran into this problem - let's hope the rest of your upgrade experience will be flawless!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With