2017-12-11 12:15:47,003 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 12:16:04,160 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 12:16:04,165 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 12:16:04,167 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 12:16:04,206 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 12:16:04,207 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 12:16:04,210 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 13:00:01,733 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - There exist project with the id
org.apache.thrift.TException: There exist project with the id
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.createAllocationRequest(AllocationManagerServerHandler.java:59)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createAllocationRequest.getResult(AllocationRegistryService.java:1646)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createAllocationRequest.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:00:01,736 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing createAllocationRequest
org.apache.airavata.allocation.manager.models.AllocationManagerException: There exist project with the id Stack trace:org.apache.thrift.TException: There exist project with the id
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.createAllocationRequest(AllocationManagerServerHandler.java:59)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createAllocationRequest.getResult(AllocationRegistryService.java:1646)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createAllocationRequest.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.createAllocationRequest(AllocationManagerServerHandler.java:67)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createAllocationRequest.getResult(AllocationRegistryService.java:1646)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createAllocationRequest.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:00:18,539 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:35)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:01:51,483 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:02:06,973 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:02:29,043 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 13:02:29,053 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 13:02:29,057 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 13:02:29,107 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 13:02:29,108 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 13:02:29,112 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 13:06:51,711 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:35)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:255)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:22:42,022 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:22:56,155 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 13:22:56,161 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 13:22:56,163 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 13:22:56,203 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 13:22:56,204 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 13:22:56,207 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 13:22:56,307 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:36)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:255)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:23:30,759 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:23:53,916 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 13:23:53,921 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 13:23:53,923 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 13:23:53,963 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 13:23:53,964 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 13:23:53,968 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 13:23:54,070 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:36)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:255)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:25:18,898 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:25:26,275 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 13:25:26,281 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 13:25:26,282 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 13:25:26,322 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 13:25:26,323 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 13:25:26,326 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 13:25:26,432 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:36)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:255)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:26:59,359 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:27:22,170 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 common frames omitted
2017-12-11 13:27:22,178 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:27:49,142 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:28:05,904 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 common frames omitted
2017-12-11 13:28:05,911 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:29:07,410 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:29:15,962 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 common frames omitted
2017-12-11 13:29:15,968 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:30:15,110 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:30:22,285 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 common frames omitted
2017-12-11 13:30:22,291 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:30:51,862 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:31:01,606 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:31:30,495 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:31:37,734 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 common frames omitted
2017-12-11 13:31:37,740 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:33:34,124 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:33:47,500 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 common frames omitted
2017-12-11 13:33:47,507 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
 Stack trace:AllocationManagerException(message:Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:241)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 14 more
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:244)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:252)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:257)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 13:37:26,701 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:37:43,865 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:43:22,477 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 13:43:58,010 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 13:43:58,016 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 13:43:58,017 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 13:43:58,070 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 13:43:58,071 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 13:43:58,077 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 13:43:58,365 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.update(AbstractRepository.java:60)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.create(AbstractRepository.java:49)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.createUser(AllocationManagerServerHandler.java:428)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createUser.getResult(AllocationRegistryService.java:2205)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createUser.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 13 common frames omitted
2017-12-11 13:43:58,373 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing createUser
org.apache.airavata.allocation.manager.models.AllocationManagerException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl Stack trace:javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "airavata-allocation-manager-server" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl
	at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:72)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.update(AbstractRepository.java:60)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.create(AbstractRepository.java:49)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.createUser(AllocationManagerServerHandler.java:428)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createUser.getResult(AllocationRegistryService.java:2205)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createUser.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml [Location: Line: 2, C: 251]: org.xml.sax.SAXParseException; systemId: file:/home/harsha/Documents/airavata-sandbox/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/target/classes/META-INF/persistence.xml; lineNumber: 2; columnNumber: 251; cvc-elt.1: Cannot find the declaration of element 'persistence'.
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:427)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:347)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:324)
	at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:297)
	at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:772)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:556)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:522)
	at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:336)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:86)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:153)
	at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:62)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
	... 13 more

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.createUser(AllocationManagerServerHandler.java:432)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createUser.getResult(AllocationRegistryService.java:2205)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$createUser.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 14:14:19,460 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 14:14:38,219 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 14:14:38,226 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 14:14:38,227 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 14:14:38,267 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 14:14:38,268 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 14:14:38,271 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 14:43:25,361 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 14:43:40,924 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 14:43:40,930 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 14:43:40,932 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 14:43:40,975 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 14:43:40,976 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 14:43:40,980 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 14:44:34,927 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:42)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 14:46:50,095 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 14:47:03,283 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity".
org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:242)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:253)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 14:47:03,286 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity". Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:242)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:253)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity". Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:242)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:253)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:245)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:253)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity". Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:242)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:253)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
 Stack trace:AllocationManagerException(message:This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity". Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK
org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity
org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:242)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:253)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:245)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:195)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:253)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:253)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 14:47:48,685 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 14:47:57,033 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 14:47:57,038 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 14:47:57,040 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 14:47:57,078 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 14:47:57,079 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 14:47:57,082 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 14:47:57,228 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:42)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 14:48:27,800 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 14:48:38,191 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 14:48:38,196 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 14:48:38,198 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 14:48:38,243 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 14:48:38,244 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 14:48:38,248 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 14:49:42,244 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:42)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 14:50:25,212 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 14:50:32,435 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 14:50:32,440 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 14:50:32,443 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 14:50:32,486 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 14:50:32,487 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 14:50:32,490 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 14:59:43,834 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 14:59:52,012 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 14:59:52,018 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 14:59:52,020 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 14:59:52,063 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 14:59:52,064 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 14:59:52,067 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:00:15,531 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:43)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 15:03:11,313 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:03:22,861 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:03:22,867 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:03:22,869 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:03:22,914 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:03:22,915 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:03:22,919 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:03:27,082 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:124)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:47)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 15:05:10,109 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:05:46,849 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:05:46,855 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:05:46,857 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:05:46,900 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:05:46,901 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:05:46,904 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:35:35,173 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:35:43,907 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:35:43,913 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:35:43,915 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:35:43,958 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:35:43,959 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:35:43,963 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:44:33,905 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:44:45,803 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:44:45,810 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:44:45,813 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:44:45,865 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:44:45,866 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:44:45,870 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:45:05,918 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:42)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 15:50:01,727 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:50:09,956 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:50:09,961 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:50:09,963 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:50:10,015 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:50:10,017 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:50:10,022 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:52:45,865 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:52:53,485 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:52:53,494 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:52:53,499 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:52:53,553 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:52:53,555 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:52:53,563 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:53:22,204 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:42)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 15:54:12,487 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:54:23,501 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:54:23,507 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:54:23,509 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:54:23,557 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:54:23,559 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:54:23,561 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:57:56,859 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:58:06,094 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:58:06,099 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:58:06,101 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:58:06,140 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:58:06,141 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:58:06,145 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 15:58:06,305 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForAdmin
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getAllUserRequests(UserAllocationDetailRepository.java:42)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:256)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForAdmin(AllocationManagerServerHandler.java:258)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1899)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForAdmin.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 15:59:05,976 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 15:59:14,819 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 15:59:14,824 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 15:59:14,826 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 15:59:14,870 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 15:59:14,872 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 15:59:14,875 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 16:01:03,961 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 16:01:14,511 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 16:01:14,516 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 16:01:14,519 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 16:01:14,562 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 16:01:14,563 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 16:01:14,566 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 16:03:38,289 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 16:03:45,561 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 16:03:45,566 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 16:03:45,568 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 16:03:45,611 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 16:03:45,613 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 16:03:45,617 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 16:04:38,957 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 16:04:50,948 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 16:04:50,953 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 16:04:50,955 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 16:04:50,995 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 16:04:50,996 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 16:04:50,999 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 16:48:23,438 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 16:48:33,177 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 16:48:33,183 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 16:48:33,184 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 16:48:33,232 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 16:48:33,232 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 16:48:33,236 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 16:48:33,338 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing assignReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: null Stack trace:java.lang.NullPointerException
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:278)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1924)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:297)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1924)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 16:54:26,102 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 16:54:33,937 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 16:54:33,943 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 16:54:33,946 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 16:54:33,991 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 16:54:33,992 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 16:54:33,995 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 16:54:34,184 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing assignReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getPrimaryOwner(UserAllocationDetailRepository.java:27)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:292)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1924)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:303)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1924)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 16:56:59,788 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 16:57:07,503 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 16:57:07,508 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 16:57:07,512 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 16:57:07,563 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 16:57:07,564 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 16:57:07,568 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 16:57:07,781 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing assignReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.UserAllocationDetailRepository.getPrimaryOwner(UserAllocationDetailRepository.java:27)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:292)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1924)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:303)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1924)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:26)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:34)
2017-12-11 17:00:10,574 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 17:00:23,076 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 17:00:23,086 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 17:00:23,089 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 17:00:23,146 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 17:00:23,148 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 17:00:23,157 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 17:09:23,223 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 17:10:11,820 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 17:10:11,825 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 17:10:11,827 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 17:10:11,871 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 17:10:11,872 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 17:10:11,876 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 21:05:21,339 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 21:05:48,574 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 21:06:07,225 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 21:06:07,233 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 21:06:07,235 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 21:06:07,272 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 21:06:07,273 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 21:06:07,276 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 21:23:42,105 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing isReviewer
org.apache.airavata.allocation.manager.models.AllocationManagerException: null Stack trace:java.lang.IllegalArgumentException
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:131)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isReviewer.getResult(AllocationRegistryService.java:1886)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isReviewer.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:135)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isReviewer.getResult(AllocationRegistryService.java:1886)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isReviewer.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 21:33:25,096 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.ProjectReviewerRepository.getProjectForReviewer(ProjectReviewerRepository.java:28)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:146)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:153)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 21:45:39,356 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 21:45:52,222 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 21:45:52,229 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 21:45:52,233 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 21:45:52,285 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 21:45:52,285 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 21:45:52,288 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 21:45:52,456 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.ProjectReviewerRepository.getProjectForReviewer(ProjectReviewerRepository.java:31)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:146)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:153)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 21:46:49,112 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 21:47:01,268 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 21:47:01,275 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 21:47:01,277 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 21:47:01,330 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 21:47:01,331 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 21:47:01,335 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 22:13:05,991 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:13:21,946 [main] ERROR o.a.a.a.m.s.AllocationManagerServerHandler  - This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity".
org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:159)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:128)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:142)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 22:13:21,951 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity". Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:159)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:128)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:142)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
 Stack trace:AllocationManagerException(message:This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity". Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:159)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:128)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:142)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:162)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:128)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:142)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
 Stack trace:AllocationManagerException(message:This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity". Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:159)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:128)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:142)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
 Stack trace:AllocationManagerException(message:This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity". Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
org.apache.airavata.allocation.manager.db.entities.UserDetailEntity".
	at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:115)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:314)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:238)
	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:212)
	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
	at org.apache.airavata.allocation.manager.db.utils.JPAUtils.getEntityManager(JPAUtils.java:74)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:153)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.get(AbstractRepository.java:88)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:159)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:128)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:142)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:162)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:128)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:142)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isReviewer(AllocationManagerServerHandler.java:134)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:142)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:152)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 22:15:38,063 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:15:46,480 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 22:15:46,488 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 22:15:46,490 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 22:15:46,532 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 22:15:46,533 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 22:15:46,536 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 22:15:46,728 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.ProjectReviewerRepository.getProjectForReviewer(ProjectReviewerRepository.java:30)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:145)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:152)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 22:17:31,605 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:17:40,593 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 22:17:40,600 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 22:17:40,602 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 22:17:40,646 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 22:17:40,647 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 22:17:40,651 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 22:24:17,639 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:24:26,512 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 22:24:26,518 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 22:24:26,520 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 22:24:26,562 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 22:24:26,563 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 22:24:26,567 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 22:24:26,720 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.ProjectReviewerRepository.getProjectForReviewer(ProjectReviewerRepository.java:30)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:145)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:152)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 22:24:41,765 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:24:48,252 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 22:24:48,259 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 22:24:48,261 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 22:24:48,304 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 22:24:48,306 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 22:24:48,310 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 22:27:29,647 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:27:41,653 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 22:27:41,658 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 22:27:41,660 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 22:27:41,698 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 22:27:41,699 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 22:27:41,702 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 22:27:41,770 [main] ERROR org.dozer.MappingProcessor  - Field mapping error -->
  MapId: null
  Type: null
  Source parent class: org.apache.airavata.allocation.manager.models.ProjectReviewer
  Source field name: id
  Source field type: class org.apache.airavata.allocation.manager.models.ProjectReviewerPK
  Source field value: ProjectReviewerPK(projectId:123456, reviewer:reviewer1)
  Dest parent class: org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity
  Dest field name: id
  Dest field type: int
org.dozer.converters.ConversionException: org.apache.commons.beanutils.ConversionException: Error converting from 'org.apache.airavata.allocation.manager.models.ProjectReviewerPK' to 'Integer' For input string: "ProjectReviewerPK(projectId:123456, reviewer:reviewer1)"
	at org.dozer.converters.PrimitiveOrWrapperConverter.convert(PrimitiveOrWrapperConverter.java:72)
	at org.dozer.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:430)
	at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:342)
	at org.dozer.MappingProcessor.mapField(MappingProcessor.java:288)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:248)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:197)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:187)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:124)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:119)
	at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:120)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.update(AbstractRepository.java:59)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.create(AbstractRepository.java:49)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:196)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1808)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
Caused by: org.apache.commons.beanutils.ConversionException: Error converting from 'org.apache.airavata.allocation.manager.models.ProjectReviewerPK' to 'Integer' For input string: "ProjectReviewerPK(projectId:123456, reviewer:reviewer1)"
	at org.apache.commons.beanutils.converters.AbstractConverter.handleError(AbstractConverter.java:267)
	at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:164)
	at org.dozer.converters.IntegerConverter.convert(IntegerConverter.java:35)
	at org.dozer.converters.PrimitiveOrWrapperConverter.convert(PrimitiveOrWrapperConverter.java:70)
	... 19 common frames omitted
Caused by: java.lang.NumberFormatException: For input string: "ProjectReviewerPK(projectId:123456, reviewer:reviewer1)"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.<init>(Integer.java:867)
	at org.apache.commons.beanutils.converters.NumberConverter.toNumber(NumberConverter.java:428)
	at org.apache.commons.beanutils.converters.NumberConverter.convertToType(NumberConverter.java:268)
	at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:156)
	... 21 common frames omitted
2017-12-11 22:27:41,775 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing assignReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: org.apache.commons.beanutils.ConversionException: Error converting from 'org.apache.airavata.allocation.manager.models.ProjectReviewerPK' to 'Integer' For input string: "ProjectReviewerPK(projectId:123456, reviewer:reviewer1)" Stack trace:org.dozer.converters.ConversionException: org.apache.commons.beanutils.ConversionException: Error converting from 'org.apache.airavata.allocation.manager.models.ProjectReviewerPK' to 'Integer' For input string: "ProjectReviewerPK(projectId:123456, reviewer:reviewer1)"
	at org.dozer.converters.PrimitiveOrWrapperConverter.convert(PrimitiveOrWrapperConverter.java:72)
	at org.dozer.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:430)
	at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:342)
	at org.dozer.MappingProcessor.mapField(MappingProcessor.java:288)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:248)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:197)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:187)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:124)
	at org.dozer.MappingProcessor.map(MappingProcessor.java:119)
	at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:120)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.update(AbstractRepository.java:59)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.create(AbstractRepository.java:49)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:196)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1808)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
Caused by: org.apache.commons.beanutils.ConversionException: Error converting from 'org.apache.airavata.allocation.manager.models.ProjectReviewerPK' to 'Integer' For input string: "ProjectReviewerPK(projectId:123456, reviewer:reviewer1)"
	at org.apache.commons.beanutils.converters.AbstractConverter.handleError(AbstractConverter.java:267)
	at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:164)
	at org.dozer.converters.IntegerConverter.convert(IntegerConverter.java:35)
	at org.dozer.converters.PrimitiveOrWrapperConverter.convert(PrimitiveOrWrapperConverter.java:70)
	... 19 more
Caused by: java.lang.NumberFormatException: For input string: "ProjectReviewerPK(projectId:123456, reviewer:reviewer1)"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.<init>(Integer.java:867)
	at org.apache.commons.beanutils.converters.NumberConverter.toNumber(NumberConverter.java:428)
	at org.apache.commons.beanutils.converters.NumberConverter.convertToType(NumberConverter.java:268)
	at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:156)
	... 21 more

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.assignReviewers(AllocationManagerServerHandler.java:205)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1808)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$assignReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 22:47:41,086 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:47:56,159 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 22:47:56,165 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 22:47:56,167 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 22:47:56,206 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 22:47:56,207 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 22:47:56,210 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 22:47:56,552 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing getAllRequestsForReviewers
org.apache.airavata.allocation.manager.models.AllocationManagerException: This operation cannot be performed while a Transaction is active. Stack trace:<openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: This operation cannot be performed while a Transaction is active.
	at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4353)
	at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1354)
	at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1307)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.execute(AbstractRepository.java:160)
	at org.apache.airavata.allocation.manager.db.repositories.AbstractRepository.select(AbstractRepository.java:139)
	at org.apache.airavata.allocation.manager.db.repositories.ProjectReviewerRepository.getProjectForReviewer(ProjectReviewerRepository.java:30)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:145)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getAllRequestsForReviewers(AllocationManagerServerHandler.java:152)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1912)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$getAllRequestsForReviewers.getResult(AllocationRegistryService.java:1)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:80)
	at org.apache.airavata.allocation.manager.server.TestServer.StartsimpleServer(TestServer.java:25)
	at org.apache.airavata.allocation.manager.server.TestServer.main(TestServer.java:33)
2017-12-11 22:48:59,443 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:49:08,224 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 22:49:08,230 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 22:49:08,233 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 22:49:08,286 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 22:49:08,287 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 22:49:08,291 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
2017-12-11 22:52:02,683 [main] INFO  o.a.a.a.m.db.utils.JPAUtils  - Database already created for Sharing Catalog !!!
2017-12-11 22:52:12,145 [main] INFO  o.dozer.config.GlobalSettings  - Trying to find Dozer configuration file: dozer.properties
2017-12-11 22:52:12,150 [main] WARN  o.dozer.config.GlobalSettings  - Dozer configuration file not found: dozer.properties.  Using defaults for all Dozer global properties.
2017-12-11 22:52:12,152 [main] INFO  org.dozer.DozerInitializer  - Initializing Dozer. Version: 5.4.0, Thread Name: main
2017-12-11 22:52:12,192 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerStatisticsController] auto registered with the Platform MBean Server
2017-12-11 22:52:12,193 [main] INFO  org.dozer.jmx.JMXPlatformImpl  - Dozer JMX MBean [org.dozer.jmx:type=DozerAdminController] auto registered with the Platform MBean Server
2017-12-11 22:52:12,195 [main] INFO  org.dozer.DozerBeanMapper  - Initializing a new instance of dozer bean mapper.
