2017-12-09 14:08:51,139 [main] INFO  o.a.a.c.u.ApplicationSettings  - Settings loaded from jar:file:/home/harsha/.m2/repository/org/apache/airavata/airavata-server-configuration/0.17-SNAPSHOT/airavata-server-configuration-0.17-SNAPSHOT.jar!/airavata-server.properties
2017-12-09 14:08:52,167 [main] ERROR o.a.a.a.m.util.Initialize  - null
java.lang.NullPointerException: null
	at java.io.Reader.<init>(Reader.java:78)
	at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
	at org.apache.airavata.allocation.manager.util.Initialize.executeSQLScript(Initialize.java:167)
	at org.apache.airavata.allocation.manager.util.Initialize.initializeDB(Initialize.java:112)
	at org.apache.airavata.allocation.manager.AllocationManagerServerHandlerTest.setup(AllocationManagerServerHandlerTest.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
	at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
	at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
2017-12-09 14:34:10,312 [main] INFO  o.a.a.c.u.ApplicationSettings  - Settings loaded from jar:file:/home/harsha/.m2/repository/org/apache/airavata/airavata-server-configuration/0.17-SNAPSHOT/airavata-server-configuration-0.17-SNAPSHOT.jar!/airavata-server.properties
2017-12-09 14:34:11,347 [main] ERROR o.a.a.a.m.util.Initialize  - null
java.lang.NullPointerException: null
	at java.io.Reader.<init>(Reader.java:78)
	at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
	at org.apache.airavata.allocation.manager.util.Initialize.executeSQLScript(Initialize.java:167)
	at org.apache.airavata.allocation.manager.util.Initialize.initializeDB(Initialize.java:112)
	at org.apache.airavata.allocation.manager.AllocationManagerServerHandlerTest.setup(AllocationManagerServerHandlerTest.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
2017-12-09 15:46:49,770 [main] INFO  o.a.a.c.u.ApplicationSettings  - Settings loaded from jar:file:/home/harsha/.m2/repository/org/apache/airavata/airavata-server-configuration/0.17-SNAPSHOT/airavata-server-configuration-0.17-SNAPSHOT.jar!/airavata-server.properties
2017-12-09 15:46:49,777 [main] ERROR o.a.a.a.m.server.ServerMain  - allocation.registry.server.port
org.apache.airavata.common.exception.ApplicationSettingsException: allocation.registry.server.port
	at org.apache.airavata.common.utils.ApplicationSettings.getSettingImpl(ApplicationSettings.java:187)
	at org.apache.airavata.common.utils.ApplicationSettings.getSetting(ApplicationSettings.java:318)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServer.start(AllocationManagerServer.java:63)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)
2017-12-09 15:54:37,405 [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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
2017-12-09 15:54:37,415 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing isAdmin
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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.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.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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
2017-12-09 15:55:44,007 [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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
2017-12-09 15:55:44,008 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing isAdmin
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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.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.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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
2017-12-09 16:32:13,653 [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:45)
	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:196)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)
2017-12-09 16:32:13,660 [main] ERROR o.a.a.a.m.server.ServerMain  - 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:45)
	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:196)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)
 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:45)
	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:196)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:245)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:196)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)

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:45)
	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:196)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)
 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:45)
	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:196)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)
)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.getUserDetails(AllocationManagerServerHandler.java:245)
	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:196)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:202)
	at org.apache.airavata.allocation.manager.server.ServerMain.main(ServerMain.java:31)
2017-12-09 16:34:38,162 [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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
2017-12-09 16:34:38,162 [main] ERROR o.a.thrift.ProcessFunction  - Internal error processing isAdmin
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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.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.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:82)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
)
	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.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)

	at org.apache.airavata.allocation.manager.server.AllocationManagerServerHandler.isAdmin(AllocationManagerServerHandler.java:201)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.getResult(AllocationRegistryService.java:1911)
	at org.apache.airavata.allocation.manager.service.cpi.AllocationRegistryService$Processor$isAdmin.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.AllocationManagerAdminServer.StartsimpleServer(AllocationManagerAdminServer.java:25)
	at org.apache.airavata.allocation.manager.server.AllocationManagerAdminServer.main(AllocationManagerAdminServer.java:34)
