Skip to content

fix(jans-orm): cleaner timer fails during clean up for Postgres #10094

@yuriyz

Description

@yuriyz

Describe the bug

DB Postgres
Lastest main

2024-11-08 16:03:39,443 ERROR [ForkJoinPool.commonPool-worker-3]  [io.jans.as.server.service.CleanerTimer] (CleanerTimer.java:237) - Failed to perform clean up.
java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because the return value of "io.jans.orm.sql.model.TableMapping.getColumTypes()" is null
        at io.jans.orm.sql.impl.SqlFilterConverter.resolveAttributeName(SqlFilterConverter.java:519) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at io.jans.orm.sql.impl.SqlFilterConverter.isMultiValue(SqlFilterConverter.java:455) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at io.jans.orm.sql.impl.SqlFilterConverter.convertToSqlFilterImpl(SqlFilterConverter.java:195) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at io.jans.orm.sql.impl.SqlFilterConverter.convertToSqlFilterImpl(SqlFilterConverter.java:132) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at io.jans.orm.sql.impl.SqlFilterConverter.convertToSqlFilter(SqlFilterConverter.java:98) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at io.jans.orm.sql.impl.SqlFilterConverter.convertToSqlFilter(SqlFilterConverter.java:93) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at io.jans.orm.sql.impl.SqlEntryManager.toSqlFilterWithEmptyAlias(SqlEntryManager.java:824) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at io.jans.orm.sql.impl.SqlEntryManager.removeImpl(SqlEntryManager.java:364) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at io.jans.orm.sql.impl.SqlEntryManager.remove(SqlEntryManager.java:333) ~[jans-orm-sql-1.1.6-SNAPSHOT.jar:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[?:?]
        at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38) ~[weld-core-impl-4.0.3.Final.jar:4.0.3.Final]
        at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:106) ~[weld-core-impl-4.0.3.Final.jar:4.0.3.Final]
        at io.jans.orm.PersistenceEntryManager$EntityManager$629524672$Proxy$_$$_WeldClientProxy.remove(Unknown Source) ~[jans-orm-core-1.1.6-SNAPSHOT.jar:?]
        at io.jans.as.server.service.CleanerTimer.cleanup(CleanerTimer.java:233) [classes/:?]
        at io.jans.as.server.service.CleanerTimer$Proxy$_$$_WeldSubclass.cleanup(Unknown Source) [classes/:?]
        at io.jans.as.server.service.CleanerTimer.processImpl(CleanerTimer.java:166) [classes/:?]
        at io.jans.as.server.service.CleanerTimer$Proxy$_$$_WeldSubclass.processImpl(Unknown Source) [classes/:?]
        at io.jans.as.server.service.CleanerTimer.process(CleanerTimer.java:112) [classes/:?]
        at io.jans.as.server.service.CleanerTimer$Proxy$_$$_WeldSubclass.process$$super(Unknown Source) [classes/:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[?:?]
        at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51) [weld-core-impl-4.0.3.Final.jar:4.0.3.Final]
        at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78) [weld-core-impl-4.0.3.Final.jar:4.0.3.Final]
        at io.jans.service.cdi.async.AsynchronousInterceptor$1.get(AsynchronousInterceptor.java:45) [jans-core-service-1.1.6-SNAPSHOT.jar:?]
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) [?:?]
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760) [?:?]
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) [?:?]
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) [?:?]
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) [?:?]
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) [?:?]
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) [?:?]

To Reproduce
Start AS and let cleaner timer run

Expected behavior
It should run without errors.

Metadata

Metadata

Assignees

Labels

comp-jans-ormComponent affected by issue or PRkind-bugIssue or PR is a bug in existing functionality

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions