SORMAS-Project icon indicating copy to clipboard operation
SORMAS-Project copied to clipboard

The latest Sormas stack (1.95.1) is not coming up with an empty db - starting from the scratch

Open tnako-sg opened this issue 1 year ago • 3 comments

Bug Description

When starting Sormas from the scratch (with an empty db) it throws below error: Null value was assigned to a property of primitive type setter of de.symeda.sormas.backend.feature.FeatureConfiguration.enabled

The content of postgres db table is: root@akademieby /opt/sormas # docker exec -it sormas_postgres_1 psql -U postgres sormas

sormas=# select featuretype, enabled, properties, entitytype from featureconfiguration order by featuretype asc, entitytype; featuretype | enabled | properties | entitytype ---------------------------------+---------+--------------------------------------------------------+------------ HIDE_JURISDICTION_FIELDS | | | SORMAS_TO_SORMAS_SHARE_CONTACTS | t | {"SHARE_SAMPLES" : true, "SHARE_IMMUNIZATIONS" : true} | (2 rows)

which mean that HIDE_JURISDICTION_FIELDS enables is NULL by default

The Java error is below:

{"Timestamp":"2024-03-26T15:29:30.317+0100","Level":"SCHWERWIEGEND","Version":"Payara 5.2022.5","LoggerName":"javax.enterprise.system.tools.deployment.common","ThreadID":"112","ThreadName":"payara-executor-service-scheduled-task","TimeMillis":"1711463370317","LevelValue":"1000","Throwable":{"Exception":"Exception while invoking class org.glassfish.ejb.startup.EjbApplication start method","StackTrace":"javax.ejb.EJBException: javax.ejb.CreateException: Initialization failed for Singleton StartupShutdownService\n\tat com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:689)\n\tat com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance(AbstractSingletonContainer.java:421)\n\tat org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:219)\n\tat org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:180)\n\tat org.glassfish.ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:159)\n\tat org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:171)\n\tat org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)\n\tat org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:292)\n\tat org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:361)\n\tat com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:629)\n\tat org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:597)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552)\n\tat java.base/java.security.AccessController.doPrivileged(Native Method)\n\tat java.base/javax.security.auth.Subject.doAs(Subject.java:361)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574)\n\tat java.base/java.security.AccessController.doPrivileged(Native Method)\n\tat java.base/javax.security.auth.Subject.doAs(Subject.java:361)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:120)\n\tat com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1869)\n\tat org.glassfish.deployment.autodeploy.AutoOperation.run(AutoOperation.java:149)\n\tat org.glassfish.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:532)\n\tat org.glassfish.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:437)\n\tat org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:371)\n\tat org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:362)\n\tat org.glassfish.deployment.autodeploy.AutoDeployService$1.run(AutoDeployService.java:231)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)\n\tat java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)\n\tat java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\nCaused by: javax.ejb.CreateException: Initialization failed for Singleton StartupShutdownService\n\tat com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:542)\n\tat com.sun.ejb.containers.AbstractSingletonContainer.access$000(AbstractSingletonContainer.java:81)\n\tat com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:687)\n\t... 35 more\nCaused by: javax.ejb.EJBTransactionRolledbackException: Exception thrown from bean: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of de.symeda.sormas.backend.feature.FeatureConfiguration.enabled\n\tat com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2386)\n\tat com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2183)\n\tat com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2104)\n\tat com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)\n\tat com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)\n\tat com.sun.proxy.$Proxy674.createMissingFeatureConfigurations(Unknown Source)\n\tat de.symeda.sormas.backend.feature.EJB31_Generated__FeatureConfigurationService__Intf____Bean.createMissingFeatureConfigurations(Unknown Source)\n\tat de.symeda.sormas.backend.common.StartupShutdownService.startup(StartupShutdownService.java:241)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.BeanCallbackInterceptor.intercept(InterceptorManager.java:1022)\n\tat com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)\n\tat com.sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.java:204)\n\tat com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)\n\tat com.sun.ejb.containers.interceptors.SystemInterceptorProxy.init(SystemInterceptorProxy.java:125)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.CallbackInterceptor.intercept(InterceptorManager.java:978)\n\tat com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)\n\tat com.sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.java:204)\n\tat org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:81)\n\tat org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.CallbackInterceptor.intercept(InterceptorManager.java:978)\n\tat com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72)\n\tat com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:418)\n\tat com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:381)\n\tat com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:2071)\n\tat com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:529)\n\t... 37 more\nCaused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of de.symeda.sormas.backend.feature.FeatureConfiguration.enabled\n\tat com.sun.ejb.containers.EJBContainerTransactionManager.checkExceptionClientTx(EJBContainerTransactionManager.java:615)\n\tat com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:485)\n\tat com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4601)\n\tat com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2134)\n\t... 71 more\nCaused by: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of de.symeda.sormas.backend.feature.FeatureConfiguration.enabled\n\tat org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)\n\tat org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1626)\n\tat org.hibernate.query.Query.getResultList(Query.java:165)\n\tat org.hibernate.query.criteria.internal.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:76)\n\tat de.symeda.sormas.backend.common.BaseAdoService.getAll(BaseAdoService.java:161)\n\tat de.symeda.sormas.backend.feature.FeatureConfigurationService.getServerFeatureConfigurations(FeatureConfigurationService.java:197)\n\tat de.symeda.sormas.backend.feature.FeatureConfigurationService.createMissingFeatureConfigurations(FeatureConfigurationService.java:132)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:588)\n\tat org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:408)\n\tat com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4835)\n\tat com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:665)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:834)\n\tat com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)\n\tat de.symeda.sormas.backend.util.ValidationConstraintViolationInterceptor.handleValidationConstraintViolation(ValidationConstraintViolationInterceptor.java:35)\n\tat jdk.internal.reflect.GeneratedMethodAccessor202.invoke(Unknown Source)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)\n\tat com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)\n\tat de.symeda.sormas.backend.util.RightsAllowedInterceptor.checkRightsAllowed(RightsAllowedInterceptor.java:111)\n\tat jdk.internal.reflect.GeneratedMethodAccessor201.invoke(Unknown Source)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)\n\tat com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)\n\tat de.symeda.sormas.backend.util.PerformanceLoggingInterceptor.logInvokeDuration(PerformanceLoggingInterceptor.java:37)\n\tat jdk.internal.reflect.GeneratedMethodAccessor200.invoke(Unknown Source)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)\n\tat com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)\n\tat de.symeda.sormas.backend.audit.AuditLoggerInterceptor.logAudit(AuditLoggerInterceptor.java:158)\n\tat jdk.internal.reflect.GeneratedMethodAccessor199.invoke(Unknown Source)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)\n\tat com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)\n\tat com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)\n\tat com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)\n\tat jdk.internal.reflect.GeneratedMethodAccessor198.invoke(Unknown Source)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)\n\tat com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:615)\n\tat org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:72)\n\tat org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)\n\tat jdk.internal.reflect.GeneratedMethodAccessor192.invoke(Unknown Source)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:888)\n\tat com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:833)\n\tat com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:375)\n\tat com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4807)\n\tat com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4795)\n\tat com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)\n\t... 69 more\nCaused by: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of de.symeda.sormas.backend.feature.FeatureConfiguration.enabled\n\tat org.hibernate.property.access.spi.SetterMethodImpl.set(SetterMethodImpl.java:88)\n\tat org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:694)\n\tat org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:144)\n\tat org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:5281)\n\tat org.hibernate.engine.internal.TwoPhaseLoad.initializeEntityFromEntityEntryLoadedState(TwoPhaseLoad.java:253)\n\tat org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:156)\n\tat org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:126)\n\tat org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1201)\n\tat org.hibernate.loader.Loader.processResultSet(Loader.java:1009)\n\tat org.hibernate.loader.Loader.doQuery(Loader.java:967)\n\tat org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:357)\n\tat org.hibernate.loader.Loader.doList(Loader.java:2868)\n\tat org.hibernate.loader.Loader.doList(Loader.java:2850)\n\tat org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2682)\n\tat org.hibernate.loader.Loader.list(Loader.java:2677)\n\tat org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:540)\n\tat org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:400)\n\tat org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:218)\n\tat org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459)\n\tat org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649)\n\tat org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617)\n\t... 131 more\nCaused by: java.lang.IllegalArgumentException\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat org.hibernate.property.access.spi.SetterMethodImpl.set(SetterMethodImpl.java:45)\n\t... 151 more\n"}}

Reproduction Steps

  1. start sormas with an empty database
  2. sormas container is not coming up
  3. Error is thrown: Null value was assigned to a property of primitive type setter of de.symeda.sormas.backend.feature.FeatureConfiguration.enabled

Expected Behavior

No response

Affected Area(s)

Web app

SORMAS Version

1.95.1

Android version/Browser

any

User Role(s)

any

Server URL

No response

Additional Information

No response

tnako-sg avatar Apr 02 '24 07:04 tnako-sg

This can be fixed by executing update featureconfiguration set enabled = true where enabled is null; But SORMAS should create working configuration on first startup.

fhauptmann avatar Apr 02 '24 12:04 fhauptmann

Small side note: after installing Releas 1.95.1 from scratch and also initializing an empty db with the default deployment artifacts only two lines were automatically generated within table featureconfiguration. Is this so on purpose?

2024-04-02___SORMAS_1 95 1__featuereconfiguration_table_only_minimally_initialized

coder34234 avatar Jul 11 '24 15:07 coder34234

Other note (I couldn' t find a related issue and direct wiki-commits are of course restricted): If required, here's a small update for Feature-Configuration-Options.md due to HIDE_JURISDICTION_FIELDS-changes in release 1.94.0: Feature-Configuration-Options.md

coder34234 avatar Jul 11 '24 15:07 coder34234