Job inMemoryAnalyticsJob failed

Message: java.lang.IllegalArgumentException: Cannot create a LinearRing. PointSequence is not closed or contains < 4 points.

Cause: java.lang.IllegalArgumentException: Cannot create a LinearRing. PointSequence is not closed or contains < 4 points.
at org.geolatte.geom.LinearRing.checkIsClosed(LinearRing.java:55)
at org.geolatte.geom.LinearRing.(LinearRing.java:45)
at org.geolatte.geom.codec.AbstractWkbDecoder.readRing(AbstractWkbDecoder.java:176)
at org.geolatte.geom.codec.AbstractWkbDecoder.readPolygonRings(AbstractWkbDecoder.java:167)
at org.geolatte.geom.codec.AbstractWkbDecoder.decodePolygon(AbstractWkbDecoder.java:133)
at org.geolatte.geom.codec.AbstractWkbDecoder.decodeGeometry(AbstractWkbDecoder.java:69)
at org.geolatte.geom.codec.AbstractWkbDecoder.decode(AbstractWkbDecoder.java:45)
at org.geolatte.geom.codec.AbstractWkbDecoder.decode(AbstractWkbDecoder.java:55)
at org.hibernate.spatial.dialect.postgis.PGGeometryTypeDescriptor.toGeometry(PGGeometryTypeDescriptor.java:121)
at org.hibernate.spatial.dialect.postgis.PGGeometryTypeDescriptor$2.doExtract(PGGeometryTypeDescriptor.java:93)
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:261)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:247)
at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:333)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2868)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1747)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1673)
at org.hibernate.loader.Loader.getRow(Loader.java:1562)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:732)
at org.hibernate.loader.Loader.processResultSet(Loader.java:991)
at org.hibernate.loader.Loader.doQuery(Loader.java:949)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
at org.hibernate.loader.Loader.doList(Loader.java:2692)
at org.hibernate.loader.Loader.listUsingQueryCache(Loader.java:2537)
at org.hibernate.loader.Loader.list(Loader.java:2499)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:392)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1490)
at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1445)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414)
at org.hisp.dhis.organisationunit.hibernate.HibernateOrganisationUnitStore.getOrganisationUnits(HibernateOrganisationUnitStore.java:208)
at org.hisp.dhis.organisationunit.DefaultOrganisationUnitService.getOrganisationUnitsAtLevel(DefaultOrganisationUnitService.java:385)
at sun.reflect.GeneratedMethodAccessor1041.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy140.getOrganisationUnitsAtLevel(Unknown Source)
at org.hisp.dhis.resourcetable.table.OrganisationUnitStructureResourceTable.getPopulateTempTableContent(OrganisationUnitStructureResourceTable.java:104)
at org.hisp.dhis.resourcetable.jdbc.JdbcResourceTableStore.generateResourceTable(JdbcResourceTableStore.java:87)
at org.hisp.dhis.resourcetable.DefaultResourceTableService.generateOrganisationUnitStructures(DefaultResourceTableService.java:135)
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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy149.generateOrganisationUnitStructures(Unknown Source)
at org.hisp.dhis.analytics.table.DefaultAnalyticsTableGenerator.generateResourceTables(DefaultAnalyticsTableGenerator.java:179)
at org.hisp.dhis.analytics.table.DefaultAnalyticsTableGenerator.generateTables(DefaultAnalyticsTableGenerator.java:104)
at org.hisp.dhis.analytics.table.scheduling.AnalyticsTableJob.execute(AnalyticsTableJob.java:70)
at org.hisp.dhis.scheduling.DefaultJobInstance.executeJob(DefaultJobInstance.java:155)
at org.hisp.dhis.scheduling.DefaultJobInstance.execute(DefaultJobInstance.java:69)
at org.hisp.dhis.scheduling.DefaultSchedulingManager.lambda$internalExecuteJobConfiguration$3(DefaultSchedulingManager.java:283)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

seems some issues with orgunit, but how I can find more? Any ideas, thx!
Tomas

Dear @tomasmatas,

It seems like this could be the same issue that others faced as well in this topic:

You have passed the upgrade part of it but as mentioned in the JIRA issue, it also causes issues with analytics.
Here is the workaround for now:

  • In our case, this is successfully allowing the flyway script to be executed correctly and the instance is updated. However, it looks like the analytics table are now using some geometries computations and we received the following error:
    Process failed: java.lang.IllegalArgumentException: Cannot create a LinearRing. PointSequence is not closed or contains < 4 points.
    Looks like previous DHIS2 instance where allowing some syntax errors in the GeoJSON geometries while now this errors are not allowed. We are available to solve this second error with the following statement using PostGIS ST functions:

UPDATE organisationunit
SET geometry = ST_MakeValid(geometry)
WHERE geometry IS NOT NULL AND NOT ST_IsValid(geometry);

Hope it helps! I’ll also comment this topic on the JIRA issue.

Best regards,
Karoline