DB per tenant sample project problem

Hi,

So in theory, in this db per tenant example project, everything set up, only what I need to do is the database part and set the Data store Database type to PostgreSQL.
But some why, anyhow I try, I can’t cross on it: “PSQLException: FATAL: database “dbpt_tenant” does not exist”.
And I checked all the steps, everything is okay, everything done. Then what is the problem?

I checked the main database connection, and Cuba says it’s okay. And the same success if I change the database to dppt_tenant1 (but I know I don’t need that here, just to know it is accessible).
image

I’ve created the dbpt_tenant1 database too as it was described. But if I login with admin or with my new User1 user, I get the same ‘database does not exist’ problem. The Session Attributes are set up by default in this project.

The TenantsRoutingDatasource class is there by default and the spring.xmls are already done.

Please, someone could do this project to work and tell me what I have may missed?

PS.: It would be good if you write down u1 's password, because it created in this project by default.

Thank you, guys.

Hi,

I’ve just upgraded the project to the latest platform version and checked if it still works.
The password for both u1 and u2 users is 1 - added to readme.
As for the exception you get - is it on the example app or in your own project?

Hi,

I get this exception in both project. In the exmaple and in my own project, too :confused:
I use 6.7.4 Cuba Studio.

Thank you very much!

Did you create dbpt_tenant1 and dbpt_tenant2 databases in your local Postgres? Also, you had to create tables and foreign key in them from 10.create-db.sql and 20.create-db.sql.

I just created dbpt_tenant1 only for testing, I thought in first time for me enough if it works for one user.
But when I created the dpbt_tenant2 the error is the same.

Yes, I ran those sql scripts, this is my dbpt_tenant1 database schema (and the dbpt_tenant2 is the same) :

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;

COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';


SET search_path = public, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- TOC entry 181 (class 1259 OID 20563)
-- Name: sample_customer; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE sample_customer (
    id uuid NOT NULL,
    version integer NOT NULL,
    create_ts timestamp without time zone,
    created_by character varying(50),
    update_ts timestamp without time zone,
    updated_by character varying(50),
    delete_ts timestamp without time zone,
    deleted_by character varying(50),
    name character varying(255)
);


ALTER TABLE sample_customer OWNER TO postgres;

--
-- TOC entry 182 (class 1259 OID 20568)
-- Name: sample_order; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE sample_order (
    id uuid NOT NULL,
    version integer NOT NULL,
    create_ts timestamp without time zone,
    created_by character varying(50),
    update_ts timestamp without time zone,
    updated_by character varying(50),
    delete_ts timestamp without time zone,
    deleted_by character varying(50),
    date_ date,
    customer_id uuid,
    amount numeric(19,2)
);


ALTER TABLE sample_order OWNER TO postgres;

--
-- TOC entry 1984 (class 2606 OID 20567)
-- Name: sample_customer sample_customer_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY sample_customer
    ADD CONSTRAINT sample_customer_pkey PRIMARY KEY (id);


--
-- TOC entry 1987 (class 2606 OID 20572)
-- Name: sample_order sample_order_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY sample_order
    ADD CONSTRAINT sample_order_pkey PRIMARY KEY (id);


--
-- TOC entry 1985 (class 1259 OID 20578)
-- Name: idx_sample_order_customer; Type: INDEX; Schema: public; Owner: postgres
--

CREATE INDEX idx_sample_order_customer ON sample_order USING btree (customer_id);


--
-- TOC entry 1988 (class 2606 OID 20573)
-- Name: sample_order fk_sample_order_customer; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--

ALTER TABLE ONLY sample_order
    ADD CONSTRAINT fk_sample_order_customer FOREIGN KEY (customer_id) REFERENCES sample_customer(id);


--
-- TOC entry 2109 (class 0 OID 0)
-- Dependencies: 6
-- Name: public; Type: ACL; Schema: -; Owner: postgres
--

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;


-- Completed on 2017-12-19 11:29:46

--
-- PostgreSQL database dump complete
--

So you login as u1/1 into the sample app and still get the exception? Could you post the stack trace?

Stack trace is what is in the Tomcat server?

I get this:

11:41:50.160 INFO  c.h.c.security.app.LoginWorkerBean - Logged in: 1bb8c0f1-0a93-110f-0d0b-4b7bb8aa6e44 [u1]
11:41:52.432 ERROR eclipselink.ejb -
11:41:52.454 ERROR c.h.cuba.core.sys.ServiceInterceptor - Exception:
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.cuba12): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database "dbpt_tenant" does not exist)
Error Code: 0
        at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:431) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at com.haulmont.cuba.core.sys.TransactionImpl.<init>(TransactionImpl.java:58) ~[cuba-core-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.core.sys.PersistenceImpl.createTransaction(PersistenceImpl.java:116) ~[cuba-core-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.core.app.RdbmsStore.createLoadTransaction(RdbmsStore.java:864) ~[cuba-core-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.core.app.RdbmsStore.loadList(RdbmsStore.java:178) ~[cuba-core-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.core.app.DataManagerBean.loadList(DataManagerBean.java:84) ~[cuba-core-6.4.2.jar:6.4.2]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
        at com.haulmont.cuba.core.app.DataManagerBean$SecureDataManagerInvocationHandler.invoke(DataManagerBean.java:353) ~[cuba-core-6.4.2.jar:6.4.2]
        at com.sun.proxy.$Proxy274.loadList(Unknown Source) ~[na:na]
        at com.haulmont.cuba.core.app.DataServiceBean.loadList(DataServiceBean.java:51) ~[cuba-core-6.4.2.jar:6.4.2]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85) ~[spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:115) ~[cuba-core-6.4.2.jar:6.4.2]
        at sun.reflect.GeneratedMethodAccessor128.invoke(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) [spring-aop-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at com.sun.proxy.$Proxy183.loadList(Unknown Source) [na:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
        at com.haulmont.cuba.core.sys.remoting.LocalServiceInvokerImpl.invoke(LocalServiceInvokerImpl.java:95) [cuba-core-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.web.sys.remoting.LocalServiceProxy$LocalServiceInvocationHandler.invoke(LocalServiceProxy.java:146) [cuba-web-6.4.2.jar:6.4.2]
        at com.sun.proxy.$Proxy25.loadList(Unknown Source) [na:na]
        at com.haulmont.cuba.client.sys.DataManagerClientImpl.loadList(DataManagerClientImpl.java:53) [cuba-client-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.data.impl.GenericDataSupplier.loadList(GenericDataSupplier.java:102) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.loadData(CollectionDatasourceImpl.java:587) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refresh(CollectionDatasourceImpl.java:146) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refresh(CollectionDatasourceImpl.java:104) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.data.impl.GroupDatasourceImpl.setSuspended(GroupDatasourceImpl.java:191) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.data.impl.DsContextImpl.resumeSuspended(DsContextImpl.java:83) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.WindowManager.afterShowWindow(WindowManager.java:968) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.web.WebWindowManager.showWindow(WebWindowManager.java:398) [cuba-web-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.WindowManager.openWindow(WindowManager.java:597) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.web.WebWindowManager.openWindow(WebWindowManager.java:137) [cuba-web-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.gui.config.MenuCommand.execute(MenuCommand.java:100) [cuba-gui-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.web.sys.MenuBuilder$1.menuSelected(MenuBuilder.java:173) [cuba-web-6.4.2.jar:6.4.2]
        at com.vaadin.ui.MenuBar.changeVariables(MenuBar.java:206) [vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:634) [vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:468) [vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:418) [vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274) [vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90) [vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.lambda$synchronizedHandleRequest$0(CubaVaadinServletService.java:314) [cuba-web-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.web.sys.CubaVaadinServletService.withUserSession(CubaVaadinServletService.java:196) ~[cuba-web-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.synchronizedHandleRequest(CubaVaadinServletService.java:314) [cuba-web-6.4.2.jar:6.4.2]
        at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) ~[vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1422) ~[vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:384) ~[vaadin-server-7.7.6.cuba.6.jar:7.7.6.cuba.6]
        at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:276) ~[cuba-web-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:185) ~[cuba-web-6.4.2.jar:6.4.2]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) ~[servlet-api.jar:na]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) ~[catalina.jar:8.5.9]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.9]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-websocket.jar:8.5.9]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.9]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.9]
        at com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:108) ~[cuba-web-6.4.2.jar:6.4.2]
        at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:95) ~[cuba-web-6.4.2.jar:6.4.2]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) ~[catalina.jar:8.5.9]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) ~[catalina.jar:8.5.9]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) ~[catalina.jar:8.5.9]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[catalina.jar:8.5.9]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474) ~[catalina.jar:8.5.9]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) ~[catalina.jar:8.5.9]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) ~[catalina.jar:8.5.9]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) ~[catalina.jar:8.5.9]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) ~[catalina.jar:8.5.9]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) ~[catalina.jar:8.5.9]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) ~[tomcat-coyote.jar:8.5.9]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) ~[tomcat-coyote.jar:8.5.9]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789) ~[tomcat-coyote.jar:8.5.9]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437) ~[tomcat-coyote.jar:8.5.9]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-coyote.jar:8.5.9]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_121]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_121]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:8.5.9]
        at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_121]
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.cuba12): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database "dbpt_tenant" does not exist)
Error Code: 0
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:815) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:303) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction(JpaTransactionManager.java:449) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:369) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        ... 94 common frames omitted
Caused by: org.eclipse.persistence.exceptions.DatabaseException:
Internal Exception: java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database "dbpt_tenant" does not exist)
Error Code: 0
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:316) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:147) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:346) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:309) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:434) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:217) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:488) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:774) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:267) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:731) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        ... 100 common frames omitted
Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database "dbpt_tenant" does not exist)
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2303) ~[tomcat-dbcp.jar:8.5.9]
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2043) ~[tomcat-dbcp.jar:8.5.9]
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1543) ~[tomcat-dbcp.jar:8.5.9]
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135) ~[eclipselink-2.6.2.cuba12.jar:2.6.2.cuba12]
        ... 110 common frames omitted
Caused by: org.postgresql.util.PSQLException: FATAL: database "dbpt_tenant" does not exist
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2455) ~[postgresql-9.4.1212.jar:9.4.1212]
        at org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2586) ~[postgresql-9.4.1212.jar:9.4.1212]
        at org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:113) ~[postgresql-9.4.1212.jar:9.4.1212]
        at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:222) ~[postgresql-9.4.1212.jar:9.4.1212]
        at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:52) ~[postgresql-9.4.1212.jar:9.4.1212]
        at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:216) ~[postgresql-9.4.1212.jar:9.4.1212]
        at org.postgresql.Driver.makeConnection(Driver.java:404) ~[postgresql-9.4.1212.jar:9.4.1212]
        at org.postgresql.Driver.connect(Driver.java:272) ~[postgresql-9.4.1212.jar:9.4.1212]
        at org.apache.tomcat.dbcp.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) ~[tomcat-dbcp.jar:8.5.9]
        at org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:257) ~[tomcat-dbcp.jar:8.5.9]
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2313) ~[tomcat-dbcp.jar:8.5.9]
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2299) ~[tomcat-dbcp.jar:8.5.9]
        ... 113 common frames omitted
11:41:52.483 ERROR com.haulmont.cuba.web.log.AppLog - Exception in com.haulmont.cuba.web.toolkit.ui.CubaMenuBar:
com.haulmont.cuba.core.global.RemoteException:
---
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.cuba12): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database "dbpt_tenant" does not exist)
Error Code: 0
---
javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.cuba12): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database "dbpt_tenant" does not exist)
Error Code: 0
---
org.eclipse.persistence.exceptions.DatabaseException:
Internal Exception: java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database "dbpt_tenant" does not exist)
Error Code: 0
---
java.sql.SQLException: Cannot create PoolableConnectionFactory (FATAL: database "dbpt_tenant" does not exist)
---
org.postgresql.util.PSQLException: FATAL: database "dbpt_tenant" does not exist
        at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:127)
        at sun.reflect.GeneratedMethodAccessor128.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618)
        at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
        at com.sun.proxy.$Proxy183.loadList(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.haulmont.cuba.core.sys.remoting.LocalServiceInvokerImpl.invoke(LocalServiceInvokerImpl.java:95)
        at com.haulmont.cuba.web.sys.remoting.LocalServiceProxy$LocalServiceInvocationHandler.invoke(LocalServiceProxy.java:146)
        at com.sun.proxy.$Proxy25.loadList(Unknown Source)
        at com.haulmont.cuba.client.sys.DataManagerClientImpl.loadList(DataManagerClientImpl.java:53)
        at com.haulmont.cuba.gui.data.impl.GenericDataSupplier.loadList(GenericDataSupplier.java:102)
        at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.loadData(CollectionDatasourceImpl.java:587)
        at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refresh(CollectionDatasourceImpl.java:146)
        at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refresh(CollectionDatasourceImpl.java:104)
        at com.haulmont.cuba.gui.data.impl.GroupDatasourceImpl.setSuspended(GroupDatasourceImpl.java:191)
        at com.haulmont.cuba.gui.data.impl.DsContextImpl.resumeSuspended(DsContextImpl.java:83)
        at com.haulmont.cuba.gui.WindowManager.afterShowWindow(WindowManager.java:968)
        at com.haulmont.cuba.web.WebWindowManager.showWindow(WebWindowManager.java:398)
        at com.haulmont.cuba.gui.WindowManager.openWindow(WindowManager.java:597)
        at com.haulmont.cuba.web.WebWindowManager.openWindow(WebWindowManager.java:137)
        at com.haulmont.cuba.gui.config.MenuCommand.execute(MenuCommand.java:100)
        at com.haulmont.cuba.web.sys.MenuBuilder$1.menuSelected(MenuBuilder.java:173)
        at com.vaadin.ui.MenuBar.changeVariables(MenuBar.java:206)
        at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:634)
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:468)
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:418)
        at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274)
        at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90)
        at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.lambda$synchronizedHandleRequest$0(CubaVaadinServletService.java:314)
        at com.haulmont.cuba.web.sys.CubaVaadinServletService.withUserSession(CubaVaadinServletService.java:196)
        at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.synchronizedHandleRequest(CubaVaadinServletService.java:314)
        at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
        at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1422)
        at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:384)
        at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:276)
        at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:185)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
        at com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:108)
        at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:95)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

I don’t see TenantsRoutingDatasource in the stack trace. Could you run zipProject task and attach the archive here?

Do you mean just zip the project?
I tried to zipped and upload, but I get a “Sorry, there was an error uploading that file. Please try again”.

Okay, so it looks like I could solve the problem.

First of all, the cuba studio in the sample project showed the wrong Additional Data store values. It showed the commented ones. It was really deceptive.
Then in the context.xml the name must be this (I thought it has to be routing_datasource):
name="jdbc/tenant".

And a clean was a big help.