zonkyio / embedded-database-spring-test

A library for creating isolated embedded databases for Spring-powered integration tests.
Apache License 2.0
399 stars 37 forks source link

Windows 11 ERROR: o.h.e.j.e.i.JdbcEnvironmentInitiator - HHH000342: Could not obtain connection to query metadata #190

Closed 4ubIce closed 2 years ago

4ubIce commented 2 years ago

Hello! I am running embedded test in SpringBoot. Binary postgres file in Temp folder is exist. A directory with database files is also created. I am use annotation

@AutoConfigureEmbeddedDatabase(provider = ZONKY, refresh = AFTER_CLASS, type = AutoConfigureEmbeddedDatabase.DatabaseType.POSTGRES)

Environment:

Log detail: 16:46:49.265 [prefetching-1] INFO i.z.t.d.p.embedded.EmbeddedPostgres - Detected a Windows x86_64 system 16:46:49.275 [prefetching-1] INFO i.z.t.d.p.e.DefaultPostgresBinaryResolver - Detected distribution: 'Unknown' 16:46:49.279 [prefetching-1] INFO i.z.t.d.p.e.DefaultPostgresBinaryResolver - System specific postgres binaries found: 'postgres-windows-x86_64.txz' 16:46:49.390 [prefetching-1] INFO i.z.t.d.p.embedded.EmbeddedPostgres - Extracting Postgres... 16:46:51.924 [prefetching-1] INFO i.z.t.d.p.embedded.EmbeddedPostgres - Postgres binaries at C:\Users\User\AppData\Local\Temp\embedded-pg\PG-2ceab81bd046fd6e4037dfd2a5d4f22e 16:46:52.120 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - The files belonging to this database system will be owned by user "User". 16:46:52.121 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - This user must also own the server process. 16:46:52.121 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - 16:46:52.123 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - The database cluster will be initialized with locale "Russian_Russia.1252". 16:46:52.123 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - The default text search configuration will be set to "russian". 16:46:52.124 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - 16:46:52.124 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - Data page checksums are disabled. 16:46:52.124 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - 16:46:52.124 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - fixing permissions on existing directory C:/Users/User/AppData/Local/Temp/epg6937770490522367344 ... ok 16:46:52.130 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - creating subdirectories ... ok 16:46:52.131 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - selecting dynamic shared memory implementation ... windows 16:46:52.193 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - selecting default max_connections ... 100 16:46:52.254 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - selecting default shared_buffers ... 128MB 16:46:52.256 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - selecting default time zone ... Europe/Moscow 16:46:52.260 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - creating configuration files ... ok 16:46:52.633 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - running bootstrap script ... ok 16:46:53.879 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - performing post-bootstrap initialization ... ok 16:46:56.298 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - syncing data to disk ... ok 16:46:56.298 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - 16:46:56.298 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - Success. You can now start the database server using: 16:46:56.298 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - 16:46:56.298 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - C:/Users/User/AppData/Local/Temp/embedded-pg/PG-2ceab81bd046fd6e4037dfd2a5d4f22e/bin/pg_ctl -D ^"C^:^\Users^\User^\AppData^\Local^\Temp^\epg6937770490522367344^" -l logfile start 16:46:56.298 [initdb:pid(8904)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - 16:46:56.303 [prefetching-1] INFO i.z.t.d.p.embedded.EmbeddedPostgres - c586115a-72ae-4b30-8ac6-b4f7f1948f2e initdb completed in 00:00:04.376 16:46:56.321 [prefetching-1] INFO i.z.t.d.p.embedded.EmbeddedPostgres - c586115a-72ae-4b30-8ac6-b4f7f1948f2e postmaster started as Process[pid=11708, exitValue="not exited"] on port 61810. Waiting up to PT20S for server startup to finish. 16:46:56.350 [postgres:pid(11708)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - Execution of PostgreSQL by a user with administrative permissions is not 16:46:56.351 [postgres:pid(11708)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - permitted. 16:46:56.351 [postgres:pid(11708)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - The server must be started under an unprivileged user ID to prevent 16:46:56.351 [postgres:pid(11708)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - possible system security compromises. See the documentation for 16:46:56.351 [postgres:pid(11708)] INFO i.z.t.d.p.embedded.EmbeddedPostgres - more information on how to properly start the server. 16:47:16.813 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: default] 16:47:16.904 [main] INFO org.hibernate.Version - HHH000412: Hibernate ORM core version 5.4.24.Final 16:47:16.959 [main] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} 16:47:17.159 [main] WARN o.h.e.j.e.i.JdbcEnvironmentInitiator - HHH000342: Could not obtain connection to query metadata io.zonky.test.db.shaded.com.google.common.util.concurrent.UncheckedExecutionException: io.zonky.test.db.provider.ProviderException: Unexpected error when preparing a database cluster; nested exception is java.io.IOException: Gave up waiting for server to start after 20000ms at io.zonky.test.db.shaded.com.google.common.util.concurrent.Futures.wrapAndThrowUnchecked(Futures.java:1571) at io.zonky.test.db.shaded.com.google.common.util.concurrent.Futures.getUnchecked(Futures.java:1556) at io.zonky.test.db.context.DefaultDatabaseContext.awaitDatabase(DefaultDatabaseContext.java:282) at io.zonky.test.db.context.DefaultDatabaseContext.getDatabase(DefaultDatabaseContext.java:126) at io.zonky.test.db.context.DatabaseTargetSource.getTarget(DatabaseTargetSource.java:32) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:192) at com.sun.proxy.$Proxy191.getConnection(Unknown Source) at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:118) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1858) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1795) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1109) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:755) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:402) at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) at io.zonky.test.db.EmbeddedDatabaseTestExecutionListener.forEachDatabase(EmbeddedDatabaseTestExecutionListener.java:90) at io.zonky.test.db.EmbeddedDatabaseTestExecutionListener.resetDatabases(EmbeddedDatabaseTestExecutionListener.java:58) at io.zonky.test.db.EmbeddedDatabaseTestExecutionListener.beforeTestClass(EmbeddedDatabaseTestExecutionListener.java:34) at org.springframework.test.context.TestContextManager.beforeTestClass(TestContextManager.java:213) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeAll(SpringExtension.java:77) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$7(ClassBasedTestDescriptor.java:359) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:359) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:189) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:132) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248) at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211) at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58) Caused by: io.zonky.test.db.provider.ProviderException: Unexpected error when preparing a database cluster; nested exception is java.io.IOException: Gave up waiting for server to start after 20000ms at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider.createDatabase(ZonkyPostgresDatabaseProvider.java:106) at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider.createTemplate(ZonkyPostgresDatabaseProvider.java:91) at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.createTemplate(TemplatingDatabaseProvider.java:129) at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.lambda$createTemplateIfPossible$1(TemplatingDatabaseProvider.java:171) at io.zonky.test.db.provider.common.TemplatingDatabaseProvider$TemplateWrapper.loadTemplate(TemplatingDatabaseProvider.java:294) at io.zonky.test.db.provider.common.TemplatingDatabaseProvider$TemplateWrapper.access$200(TemplatingDatabaseProvider.java:224) at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.createTemplateIfPossible(TemplatingDatabaseProvider.java:171) at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.createDatabase(TemplatingDatabaseProvider.java:112) at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.createDatabase(TemplatingDatabaseProvider.java:104) at io.zonky.test.db.provider.common.PrefetchingDatabaseProvider$PrefetchingTask.lambda$forPreparer$0(PrefetchingDatabaseProvider.java:391) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at io.zonky.test.db.provider.common.PrefetchingDatabaseProvider$PrefetchingTask.run(PrefetchingDatabaseProvider.java:420) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.io.IOException: Gave up waiting for server to start after 20000ms at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.waitForServerStartup(EmbeddedPostgres.java:334) at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.startPostmaster(EmbeddedPostgres.java:284) at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.<init>(EmbeddedPostgres.java:163) at io.zonky.test.db.postgres.embedded.EmbeddedPostgres$Builder.start(EmbeddedPostgres.java:583) at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider$DatabaseInstance.<init>(ZonkyPostgresDatabaseProvider.java:135) at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider$DatabaseInstance.<init>(ZonkyPostgresDatabaseProvider.java:126) at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider$1.load(ZonkyPostgresDatabaseProvider.java:70) at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider$1.load(ZonkyPostgresDatabaseProvider.java:68) at io.zonky.test.db.shaded.com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) at io.zonky.test.db.shaded.com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) at io.zonky.test.db.shaded.com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) at io.zonky.test.db.shaded.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) at io.zonky.test.db.shaded.com.google.common.cache.LocalCache.get(LocalCache.java:4147) at io.zonky.test.db.shaded.com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) at io.zonky.test.db.shaded.com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider.createDatabase(ZonkyPostgresDatabaseProvider.java:102) ... 14 common frames omitted Caused by: java.sql.SQLException: connect failed at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.verifyReady(EmbeddedPostgres.java:344) at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.waitForServerStartup(EmbeddedPostgres.java:319) ... 29 common frames omitted Caused by: java.net.SocketTimeoutException: connect timed out at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method) at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.base/java.net.Socket.connect(Socket.java:608) at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.verifyReady(EmbeddedPostgres.java:342) ... 30 common frames omitted

Please help me to fix it. Thank you!

4ubIce commented 2 years ago

I removed the administrator rights from the user User and everything worked. Can you fix it so that everything works under a user with administrator rights?

tomix26 commented 2 years ago

I'm afraid that it's a restriction of PostgreSQL database and there is nothing I can do to resolve it. On Linux platform PostgreSQL strictly refuses to run under root user, while on Windows platform it sometimes works and sometimes not. More details in the following thread: https://github.com/zonkyio/embedded-database-spring-test/issues/77#issuecomment-624016889