Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    NullPointerException in SQLDataSource.getSQLClause with customSQL field

    SmartClient Version: v13.1p_2026-04-24/Enterprise Deployment (built 2026-04-24)

    I’m encountering an intermittent NullPointerException in my custom server dataSource when working with SQLDataSource.getSQLClause:

    Code:
    Caused by: java.lang.NullPointerException
        at com.isomorphic.datasource.IncludeFromDefinition.create(IncludeFromDefinition.java:118)
        at com.isomorphic.datasource.DSRequest.buildIncludeFromDefinitions(DSRequest.java:8527)
        at com.isomorphic.datasource.DSRequest.buildFieldData(DSRequest.java:5947)
        at com.isomorphic.sql.SQLDataSource.getSQLClause(SQLDataSource.java:5707)
        at com.isomorphic.sql.SQLDataSource.getSQLClause(SQLDataSource.java:5671)
    The exception occurs when executing:

    Code:
    SQLDataSource.getSQLClause(SQLClauseType.Values, dsRequest)
    where dsRequest is built server-side, of type update, with criteria composed of a single primary key and some dynamic fields.
    In some cases, these values contain only one field to update, but that field may be customSQL, so it will not appear in the generated SQL (and that’s exactly what I want to detect, to avoid executing a useless update).

    Normally everything works, but I’d say I can frequently reproduce this error if I trigger two requests close together. The dataSource uses my custom serverConstructor via Spring.

    Do you happen to have any idea what could be causing the problem? I’m not really sure how to debug this further.

    #2
    I forgot to mention that these update requests are created (under certain conditions) as a result of a fetch- one for each record in the dataList returned by the fetch. In this case, there are 75 records, so 75 DSRequests of type update are created.

    I want to discard the unnecessary ones using that check, which occasionally fails, and then execute the remaining ones using SQLDataSource.executeAsBatch.

    In practice, I’m able to reproduce the issue with two fetches triggered close together, and it seems that the error always occurs on the 75th DSRequest of type update.

    Comment


      #3
      The problem is earlier in the processing - we tried calling DataSourceManager.get() to get an instance of your DataSource, but something crashed. The later NPE isn't the problem - once we can't get the DataSource, there's no way to complete the request.

      Since this is happening with two nearly-concurrent requests, we would guess that your Spring serverConstructor has some sort of concurrency bug and threw an exception during DataSource creation.

      If you look earlier in the log for something like "Couldn't create DataSource" or "Failed to create data source" you should see us logging whatever exception your Spring code threw.

      Comment


        #4
        Just to make it clear (we were doing a second review on this) - if you can't find logs enough to figure out where the crash happened, please show us what you have in the logs, because we would want to improve the logs so that the cause is very clear.

        Or if you did figure it out from the logs, perhaps just briefly tell the story to help other users? Thanks in advance.

        Comment


          #5
          Hi, I haven’t spent much time investigating the issue yet, but for now I can say that I do see an earlier error in the logs:

          Code:
          WARN IncludeFromDefinition Failed to create data source 'SC_DOCUMENTI'. java.util.ConcurrentModificationException
              at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
              at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:741)
              at com.isomorphic.datasource.DataSource.getDynamicDSGenerator(DataSource.java:1075)
              at com.isomorphic.datasource.DataSource.isUnPooledDynamicDS(DataSource.java:1099)
              at com.isomorphic.datasource.DataSourceManager._getDataSource(DataSourceManager.java:210)
              at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:163)
              at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:121)
              at com.isomorphic.datasource.DataSourceManager.get(DataSourceManager.java:313)
              at com.isomorphic.datasource.DataSource.getIncludeFromInfo(DataSource.java:10737)
              at com.isomorphic.datasource.BasicDataSource.init(BasicDataSource.java:732)
              at com.isomorphic.sql.SQLDataSource.init(SQLDataSource.java:270)
              at com.isomorphic.datasource.DataSource.initialize(DataSource.java:1150)
              at com.isomorphic.datasource.BasicDataSource.fromConfig(BasicDataSource.java:258)
              at com.isomorphic.datasource.DataSource.fromConfig(DataSource.java:1125)
              at com.isomorphic.datasource.DataSource.loadDS(DataSource.java:694)
              at com.isomorphic.datasource.DataSource.forName(DataSource.java:577)
              at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:128)
              at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:154)
              at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
              at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:90)
              at com.isomorphic.datasource.DataSourceManager._getDataSource(DataSourceManager.java:214)
              at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:163)
              at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:121)
              at com.isomorphic.datasource.DataSourceManager.get(DataSourceManager.java:313)
              at com.isomorphic.datasource.IncludeFromDefinition.create(IncludeFromDefinition.java:80)
              at com.isomorphic.datasource.DSRequest.buildIncludeFromDefinitions(DSRequest.java:8527)
              at com.isomorphic.datasource.DSRequest.buildFieldData(DSRequest.java:5947)
              at com.isomorphic.sql.SQLDataSource.getSQLClause(SQLDataSource.java:5707)
              at com.isomorphic.sql.SQLDataSource.getSQLClause(SQLDataSource.java:5671)

          Comment


            #6
            I also noticed this log:

            Code:
            SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
            I’m not sure whether it’s relevant to the error. In any case, I could try setting the rpcManager/DSTransaction.

            Comment


              #7
              Questions:

              1. Is that concurrent modification problem from the same thread, from earlier in it?

              2. Is SC_DOCUMENTI the DataSource that was fielding the request? If not, how is it related?

              We probably need the full request logs, but right now this is looking like an app-level concurrency issue, like running two threads through the same DataSource instance. Perhaps your Spring code that produces the DataSource also hangs onto it and does something with it later? That would be a no-no.

              Comment


                #8
                Hi, this is the full request log, and:
                1. yes, it seems to be the same thread
                2. yes, it's the same dataSource that issued the requests

                Code:
                2026-05-04T11:47:35,207 [tid:50] DEBUG RPCManager Starting request parsing
                2026-05-04T11:47:35,207 [tid:45] DEBUG RPCManager Starting request parsing
                2026-05-04T11:47:35,208 [tid:45] DEBUG RPCManager Done request parsing
                2026-05-04T11:47:35,208 [tid:45] DEBUG RPCManager Processing 1 requests.
                2026-05-04T11:47:35,208 [tid:50] DEBUG RPCManager Done request parsing
                2026-05-04T11:47:35,208 [tid:50] DEBUG RPCManager Processing 1 requests.
                2026-05-04T11:47:35,208 [tid:45] DEBUG RPCManager Request #1 (DSRequest) payload: {
                    criteria:{
                    },
                    operationConfig:{
                        dataSource:"SC_DOCUMENTI",
                        repo:null,
                        operationType:"fetch",
                        textMatchStyle:"exact"
                    },
                    startRow:0,
                    endRow:15,
                    appID:"builtinApplication",
                    operation:"SC_DOCUMENTI_fetch",
                    oldValues:null,
                    tenantId:null
                }
                2026-05-04T11:47:35,208 [tid:45] INFO DSRequest Executing SC_DOCUMENTI.fetch rows: 0->15 with
                criteria: {}
                2026-05-04T11:47:35,211 [tid:45] DEBUG PoolableSQLConnectionFactory makeObject() created an unpooled Connection '884093923'
                2026-05-04T11:47:35,211 [tid:45] DEBUG SQLConnectionManager Borrowed connection '884093923' from DBCP
                2026-05-04T11:47:35,211 [tid:45] DEBUG SQLTransaction Started new dbJas transaction "884093923"
                2026-05-04T11:47:35,212 [tid:45] INFO DSRequest Executing SC_DOCUMENTI.fetch rows: 0->15 with
                criteria: {}
                2026-05-04T11:47:35,212 [tid:45] DEBUG AppBase No userTypes defined, allowing anyone access to all operations for this application
                2026-05-04T11:47:35,212 [tid:45] DEBUG AppBase No public zero-argument method named '_SC_DOCUMENTI_fetch' found, performing generic datasource operation
                2026-05-04T11:47:35,213 [tid:50] DEBUG RPCManager Request #1 (DSRequest) payload: {
                    criteria:{
                    },
                    operationConfig:{
                        dataSource:"SC_DOCUMENTI",
                        repo:null,
                        operationType:"fetch",
                        textMatchStyle:"exact"
                    },
                    startRow:0,
                    endRow:15,
                    appID:"builtinApplication",
                    operation:"SC_DOCUMENTI_fetch",
                    oldValues:null,
                    tenantId:null
                }
                2026-05-04T11:47:35,213 [tid:50] INFO DSRequest Executing SC_DOCUMENTI.fetch rows: 0->15 with
                criteria: {}
                2026-05-04T11:47:35,213 [tid:45] DEBUG SQLOrderClause no data; returning empty string
                2026-05-04T11:47:35,214 [tid:45] INFO SQLWhereClause empty condition
                2026-05-04T11:47:35,214 [tid:45] DEBUG SQL Executing row count query: SELECT COUNT(*) FROM $defaultTableClause$defaultAnsiJoinClause
                2026-05-04T11:47:35,214 [tid:45] INFO SQL Executing SQL query on 'dbJas': SELECT COUNT(*) FROM DBJAS.SC_DOCUMENTI JOIN DBJAS.JAS_STAGIONI ON SC_DOCUMENTI.ID_STAGIONE_FK = JAS_STAGIONI.ID_REC LEFT OUTER JOIN DBJAS.JAS_SOCIETA SOCIETA ON SC_DOCUMENTI.ID_SCUOLA_CALCIO_FK = SOCIETA.ID_REC LEFT OUTER JOIN DBJAS.OSS_PLANNING_ATTIVITA OSS_PLANNING_ATTIVITA ON SC_DOCUMENTI.ID_ATTIVITA_FK = OSS_PLANNING_ATTIVITA.ID_REC LEFT OUTER JOIN DBJAS.JAS_SOCIETA OSS_PLANNING_ATTIVITA_ID_SCUOLA_CALCIO_FK ON OSS_PLANNING_ATTIVITA.ID_SCUOLA_CALCIO_FK = OSS_PLANNING_ATTIVITA_ID_SCUOLA_CALCIO_FK.ID_REC
                2026-05-04T11:47:35,216 [tid:50] DEBUG PoolableSQLConnectionFactory makeObject() created an unpooled Connection '889564978'
                2026-05-04T11:47:35,216 [tid:50] DEBUG SQLConnectionManager Borrowed connection '889564978' from DBCP
                2026-05-04T11:47:35,216 [tid:50] DEBUG SQLTransaction Started new dbJas transaction "889564978"
                2026-05-04T11:47:35,216 [tid:50] INFO DSRequest Executing SC_DOCUMENTI.fetch rows: 0->15 with
                criteria: {}
                2026-05-04T11:47:35,216 [tid:50] DEBUG AppBase No userTypes defined, allowing anyone access to all operations for this application
                2026-05-04T11:47:35,216 [tid:50] DEBUG AppBase No public zero-argument method named '_SC_DOCUMENTI_fetch' found, performing generic datasource operation
                2026-05-04T11:47:35,217 [tid:50] DEBUG PoolableSQLConnectionFactory makeObject() created an unpooled Connection '376030724'
                2026-05-04T11:47:35,217 [tid:50] DEBUG SQLConnectionManager Borrowed connection '376030724' from DBCP
                2026-05-04T11:47:35,217 [tid:50] INFO SQLDSGenerator Fetching column metadata for table: SC_DOCUMENTI
                2026-05-04T11:47:35,217 [tid:50] INFO SQLDSGenerator =============Using catalog: null
                2026-05-04T11:47:35,228 [tid:50] INFO SQLDSGenerator Fetching column metadata for SC_DOCUMENTI complete
                2026-05-04T11:47:35,233 [tid:50] DEBUG SQLConnectionManager About to close PoolGuardConnectionWrapper with hashcode "376030724"
                2026-05-04T11:47:35,235 [tid:50] DEBUG SQLOrderClause no data; returning empty string
                2026-05-04T11:47:35,235 [tid:50] INFO SQLWhereClause empty condition
                2026-05-04T11:47:35,236 [tid:50] DEBUG SQL Executing row count query: SELECT COUNT(*) FROM $defaultTableClause$defaultAnsiJoinClause
                2026-05-04T11:47:35,236 [tid:50] INFO SQL Executing SQL query on 'dbJas': SELECT COUNT(*) FROM DBJAS.SC_DOCUMENTI JOIN DBJAS.JAS_STAGIONI ON SC_DOCUMENTI.ID_STAGIONE_FK = JAS_STAGIONI.ID_REC LEFT OUTER JOIN DBJAS.JAS_SOCIETA SOCIETA ON SC_DOCUMENTI.ID_SCUOLA_CALCIO_FK = SOCIETA.ID_REC LEFT OUTER JOIN DBJAS.OSS_PLANNING_ATTIVITA OSS_PLANNING_ATTIVITA ON SC_DOCUMENTI.ID_ATTIVITA_FK = OSS_PLANNING_ATTIVITA.ID_REC LEFT OUTER JOIN DBJAS.JAS_SOCIETA OSS_PLANNING_ATTIVITA_ID_SCUOLA_CALCIO_FK ON OSS_PLANNING_ATTIVITA.ID_SCUOLA_CALCIO_FK = OSS_PLANNING_ATTIVITA_ID_SCUOLA_CALCIO_FK.ID_REC
                2026-05-04T11:47:35,338 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,340 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,351 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,353 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,371 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,372 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,382 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,384 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,406 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,408 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,414 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,415 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,445 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,448 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,448 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,449 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,476 [tid:50] WARN IncludeFromDefinition Failed to create data source 'SC_DOCUMENTI'. java.util.ConcurrentModificationException
                    at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
                    at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:741)
                    at com.isomorphic.datasource.DataSource.getDynamicDataSource(DataSource.java:1013)
                    at com.isomorphic.datasource.DataSource.forName(DataSource.java:576)
                    at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:128)
                    at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:154)
                    at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
                    at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:90)
                    at com.isomorphic.datasource.DataSourceManager._getDataSource(DataSourceManager.java:214)
                    at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:163)
                    at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:121)
                    at com.isomorphic.datasource.DataSourceManager.get(DataSourceManager.java:313)
                    at com.isomorphic.datasource.DataSource.getIncludeFromInfo(DataSource.java:10737)
                    at com.isomorphic.datasource.BasicDataSource.init(BasicDataSource.java:732)
                    at com.isomorphic.sql.SQLDataSource.init(SQLDataSource.java:270)
                    at com.isomorphic.datasource.DataSource.initialize(DataSource.java:1150)
                    at com.isomorphic.datasource.BasicDataSource.fromConfig(BasicDataSource.java:258)
                    at com.isomorphic.datasource.DataSource.fromConfig(DataSource.java:1125)
                    at com.isomorphic.datasource.DataSource.loadDS(DataSource.java:694)
                    at com.isomorphic.datasource.DataSource.forName(DataSource.java:577)
                    at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:128)
                    at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:154)
                    at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
                    at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:90)
                    at com.isomorphic.datasource.DataSourceManager._getDataSource(DataSourceManager.java:214)
                    at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:163)
                    at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:121)
                    at com.isomorphic.datasource.DataSourceManager.get(DataSourceManager.java:313)
                    at com.isomorphic.datasource.IncludeFromDefinition.create(IncludeFromDefinition.java:80)
                    at com.isomorphic.datasource.DSRequest.buildIncludeFromDefinitions(DSRequest.java:8527)
                    at com.isomorphic.datasource.DSRequest.buildFieldData(DSRequest.java:5947)
                    at com.isomorphic.sql.SQLDataSource.getSQLClause(SQLDataSource.java:5707)
                    at com.isomorphic.sql.SQLDataSource.getSQLClause(SQLDataSource.java:5671)
                    at com.juve.azure.storage.helpers.AzureDataSourceHandler.createUpdateRequest(AzureDataSourceHandler.java:905)
                    at com.juve.azure.storage.helpers.AzureDataSourceHandler.updateSASUrlsAndSetFileMetadata(AzureDataSourceHandler.java:683)
                    at com.juve.azure.storage.CustomBinaryFieldDataSource.executeFetch(CustomBinaryFieldDataSource.java:303)
                    at com.isomorphic.datasource.DataSource.execute(DataSource.java:3397)
                    at com.juve.azure.storage.CustomBinaryFieldDataSource.execute(CustomBinaryFieldDataSource.java:239)
                    at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:656)
                    at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:555)
                    at com.isomorphic.application.AppBase.execute(AppBase.java:498)
                    at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:4881)
                    at com.isomorphic.datasource.DSRequest$execute$1.call(Unknown Source)
                    at Script1.run(Script1.groovy:24)
                    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)
                    at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71)
                    at com.isomorphic.scripting.ScriptXBase.evalScript(ScriptXBase.java:551)
                    at com.isomorphic.scripting.ScriptXBase.eval(ScriptXBase.java:76)
                    at com.isomorphic.rpc.Scripting.evalServerScript(Scripting.java:141)
                    at com.isomorphic.rpc.BuiltinRPC.evalServerScript(BuiltinRPC.java:763)
                    at com.isomorphic.datasource.DataSourceDMI.evalInlineScript(DataSourceDMI.java:1010)
                    at com.isomorphic.datasource.DataSourceDMI.evalInlineScript(DataSourceDMI.java:836)
                    at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:236)
                    at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
                    at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:4857)
                    at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:255)
                    at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:212)
                    at com.juve.azure.storage.CustomBinaryFieldIDACall.processRPCTransaction(CustomBinaryFieldIDACall.java:22)
                    at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:153)
                    at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:123)
                    at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
                    at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
                    at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:180)
                    at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at com.juve.spring.FrameOriginFilter.doFilter(FrameOriginFilter.java:36)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at com.juve.utils.Log4j2SessionFilter.doFilter(Log4j2SessionFilter.java:72)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:263)
                    at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:91)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
                    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
                    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter.doFilterInternal(DefaultLogoutPageGeneratingFilter.java:52)
                    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:206)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)
                    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
                    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
                    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
                    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
                    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
                    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:154)
                    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88)
                    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
                    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                2026-05-04T11:47:35,479 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,481 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83)
                    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:643)
                    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72)
                    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
                    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398)
                    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
                    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:939)
                    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1831)
                    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
                    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
                    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
                    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
                    at java.base/java.lang.Thread.run(Thread.java:829)
                
                2026-05-04T11:47:35,476 [tid:50] ERROR AzureDataSourceHandler Errore durante l'aggiornamento del record con primary key: 10185225 java.lang.NullPointerException
                    at com.isomorphic.datasource.IncludeFromDefinition.create(IncludeFromDefinition.java:118)
                    at com.isomorphic.datasource.DSRequest.buildIncludeFromDefinitions(DSRequest.java:8527)
                    at com.isomorphic.datasource.DSRequest.buildFieldData(DSRequest.java:5947)
                    at com.isomorphic.sql.SQLDataSource.getSQLClause(SQLDataSource.java:5707)
                    at com.isomorphic.sql.SQLDataSource.getSQLClause(SQLDataSource.java:5671)
                    at com.juve.azure.storage.helpers.AzureDataSourceHandler.createUpdateRequest(AzureDataSourceHandler.java:905)
                    at com.juve.azure.storage.helpers.AzureDataSourceHandler.updateSASUrlsAndSetFileMetadata(AzureDataSourceHandler.java:683)
                    at com.juve.azure.storage.CustomBinaryFieldDataSource.executeFetch(CustomBinaryFieldDataSource.java:303)
                    at com.isomorphic.datasource.DataSource.execute(DataSource.java:3397)
                    at com.juve.azure.storage.CustomBinaryFieldDataSource.execute(CustomBinaryFieldDataSource.java:239)
                    at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:656)
                    at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:555)
                    at com.isomorphic.application.AppBase.execute(AppBase.java:498)
                    at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:4881)
                    at com.isomorphic.datasource.DSRequest$execute$1.call(Unknown Source)
                    at Script1.run(Script1.groovy:24)
                    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)
                    at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71)
                    at com.isomorphic.scripting.ScriptXBase.evalScript(ScriptXBase.java:551)
                    at com.isomorphic.scripting.ScriptXBase.eval(ScriptXBase.java:76)
                    at com.isomorphic.rpc.Scripting.evalServerScript(Scripting.java:141)
                    at com.isomorphic.rpc.BuiltinRPC.evalServerScript(BuiltinRPC.java:763)
                    at com.isomorphic.datasource.DataSourceDMI.evalInlineScript(DataSourceDMI.java:1010)
                    at com.isomorphic.datasource.DataSourceDMI.evalInlineScript(DataSourceDMI.java:836)
                    at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:236)
                    at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
                    at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:4857)
                    at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:255)
                    at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:212)
                    at com.juve.azure.storage.CustomBinaryFieldIDACall.processRPCTransaction(CustomBinaryFieldIDACall.java:22)
                    at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:153)
                    at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:123)
                    at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
                    at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
                    at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:180)
                    at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at com.juve.spring.FrameOriginFilter.doFilter(FrameOriginFilter.java:36)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at com.juve.utils.Log4j2SessionFilter.doFilter(Log4j2SessionFilter.java:72)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:263)
                    at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:91)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
                    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
                    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter.doFilterInternal(DefaultLogoutPageGeneratingFilter.java:52)
                    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:206)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)
                    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
                    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157)
                    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
                    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
                    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
                    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
                    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
                    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
                    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:142)
                    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:154)
                    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88)
                    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
                    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83)
                    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:643)
                    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72)
                    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
                    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398)
                    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
                    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:939)
                    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1831)
                    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
                    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
                    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
                    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
                    at java.base/java.lang.Thread.run(Thread.java:829)
                
                2026-05-04T11:47:35,509 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,511 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,511 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,513 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,542 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,544 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,544 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,545 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,576 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,576 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,578 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,578 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,609 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,609 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,611 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,611 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,641 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,641 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,643 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,643 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,674 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,674 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,676 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,676 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,707 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,707 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,709 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,709 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,741 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,741 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,743 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,743 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,774 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,774 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,776 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,776 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,808 [tid:50] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,808 [tid:45] INFO SQLDataSource dsTransaction was null in getSQLClause() - cannot apply declarative criteria
                2026-05-04T11:47:35,810 [tid:50] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,810 [tid:45] DEBUG rendering Null reference [template 'getSQLClause(Values)', line 1, column 1]: $defaultValuesClause cannot be resolved.
                2026-05-04T11:47:35,810 [tid:45] INFO DSResponse DSResponse: List with 15 items
                2026-05-04T11:47:35,810 [tid:50] INFO DSResponse DSResponse: List with 15 items
                2026-05-04T11:47:35,810 [tid:45] INFO DSResponse DSResponse: List with 15 items
                2026-05-04T11:47:35,810 [tid:50] INFO DSResponse DSResponse: List with 15 items
                2026-05-04T11:47:35,810 [tid:50] DEBUG RPCManager Content type for RPC transaction: text/plain; charset=UTF-8
                2026-05-04T11:47:35,810 [tid:45] DEBUG RPCManager Content type for RPC transaction: text/plain; charset=UTF-8
                2026-05-04T11:47:35,810 [tid:50] DEBUG SQLTransaction Committing dbJas transaction "889564978"
                2026-05-04T11:47:35,810 [tid:45] DEBUG SQLTransaction Committing dbJas transaction "884093923"
                2026-05-04T11:47:35,810 [tid:50] DEBUG RPCManager DMI response, dropExtraFields: false
                2026-05-04T11:47:35,810 [tid:45] DEBUG RPCManager DMI response, dropExtraFields: false
                2026-05-04T11:47:35,811 [tid:45] DEBUG SQLTransaction getConnection() looked for transactional connection for dbJas: hashcode "884093923"
                2026-05-04T11:47:35,811 [tid:50] DEBUG SQLTransaction getConnection() looked for transactional connection for dbJas: hashcode "889564978"
                2026-05-04T11:47:35,811 [tid:45] DEBUG SQLTransaction Ending dbJas transaction "884093923"
                2026-05-04T11:47:35,811 [tid:50] DEBUG SQLTransaction Ending dbJas transaction "889564978"
                2026-05-04T11:47:35,811 [tid:45] DEBUG SQLConnectionManager About to close PoolGuardConnectionWrapper with hashcode "884093923"
                2026-05-04T11:47:35,811 [tid:50] DEBUG SQLConnectionManager About to close PoolGuardConnectionWrapper with hashcode "889564978"
                note that you will also see a log entry related to a call to DataSourceTools.getDataSourceConfigFromTable(), because I invoke it when initializing my custom server dataSource. I tried removing it since it's not essential, but the problem still occurs.

                What actually seems to "fix" the issue is assigning the dsTransaction to the dsRequest used in the call to SQLDataSource.getSQLClause() (so that the WARN from post #6 no longer appears).

                However, I'm not sure whether this is a proper fix.

                Comment

                Working...
                X