CacheDatasetException: exception getting dataset from cache

Hello,

We are creating a report based on a domain. This report has dynamic parameters. When publishing the report and running with new parameters it fails to resolve the cache, generating an exception. Executing the query inside the domain, it returns the results successfully.

 

.jaspersoft.jasperserver.api.JSException: exception fetching from cache
Arguments:
        at com.jaspersoft.ji.adhoc.strategy.CommonDomainDataStrategyCacheListener.stateChanged(CommonDomainDataStrategyCacheListener.java:54)
        at com.jaspersoft.commons.datarator.EhCachedData.setState(EhCachedData.java:247)
        at com.jaspersoft.commons.datarator.EhCachedData.setThrowable(EhCachedData.java:268)
        at com.jaspersoft.commons.datarator.EhCachedData.fetchData(EhCachedData.java:219)
        at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getCachedData(BaseDataSetCacheImpl.java:311)
        at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getWorkingDataSet(BaseDataSetCacheImpl.java:301)
        at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:108)
        at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:81)
        at com.jaspersoft.ji.adhoc.strategy.CommonDomainDataStrategy.getWorkingDataSet(CommonDomainDataStrategy.java:1290)     
        at com.jaspersoft.ji.adhoc.strategy.CompiledDomainQuery.getWorkingDataSet(CompiledDomainQuery.java:109)
        at com.jaspersoft.ji.adhoc_engine.execution.AppQueryExecutor.executeQuery(AppQueryExecutor.java:140)
        at com.jaspersoft.ji.adhoc_engine.execution.AppQueryExecutor.executeQuery(AppQueryExecutor.java:79)
        at com.jaspersoft.ji.adhoc_engine.execution.AppQueryExecutor.executeQuery(AppQueryExecutor.java:57)
        at com.jaspersoft.ji.adhoc.strategy.StrategyAwareAdhocQueryExecuter.createDatasource(StrategyAwareAdhocQueryExecuter.java:82)
        at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1263)
        at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:732)
        at net.sf.jasperreports.engine.fill.BaseReportFiller.setParameters(BaseReportFiller.java:457)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:585)
        at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:414)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:826)
        at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:61)
        at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:221)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.jaspersoft.commons.dataset.DataSetException: Exception calling JRDataSource.next() for query select "academic_main_external_id",
"academic_main_name",
"completed_progress_at",
"enrollment_status_name",
"last_access_at",
"topic_category",
"topic_name",
"total_access",
"user_external_id",
"user_name"
from (select
       am.tenant_id,
       am.ies_id as institution_id,
        e.id as enrollment_id,
        es.id as enrollment_status_id,
        es."name" as enrollment_status_name,
        u.external_id  as user_external_id,
       u.safea_user_id,
       r.safea_role,
        coalesce(u.social_name, u."name") as user_name,
        am.external_id  as academic_main_external_id,
        am.id as plataforma_academic_main_id,
        am."name" as academic_main_name,
       t.id as topic_id,
       t2.id as parent_topic_id,
        t.title || coalesce(' (' || t2.title || ')', '') as topic_name,
        t2.title as parent_topic_name,
        ct."name" as topic_category,
        p.created_at as completed_progress_at,
        count(evt.id) as total_access,
        max(evt.created_at) as last_access_at
from
        schema_abc.enrollment e
join schema_abc.role_course rc on
        e.role_course_id = rc.id
join schema_abc.enrollment_status es on
        e.enrollment_status_id = es.id
join schema_abc.role as r on
        rc.role_id = r.id
join schema_abc."user" u on
        e.user_id = u.id
join schema_abc.academic_main am on
        e.academic_main_id = am.id
join schema_abc."content" c on
        c.academic_main_id = am.id
join schema_abc.topic t on
        t.content_id = c.id
join schema_abc.topic_type tt on
        t.topic_type_id = tt.id
join schema_abc.category_type ct on
        tt.category_type_id = ct.id
left join schema_abc.topic t2 on
        t.parent_topic_id = t2.id
left join schema_abc.progress p on
        p.enrollment_id = e.id
        and p.topic_id = t.id
        and p.is_deleted = false
left join (
        select
                evt.id,
                evt.name,
                evt.role_alias,
                evt.topic_id,
                evt.safea_user_id,
                evt.created_at
        from
                schema_xyz.vw_plataforma_event as evt
) as evt
        on evt.safea_user_id = u.safea_user_id
        and evt.role_alias = r.safea_role
        and evt.name = 'TopicClick'
        and (evt.topic_id = t.id or evt.topic_id = t2.id)
where
        e.is_deleted = false
        and e.tenant_id = 42
        and am.id = 67972
        and r.is_student = true
        and am.is_deleted = false
        and u.is_deleted = false
        and ct."name"  <> 'ORGANIZATION'
group by e.id,
        es.id,
        es."name",
        u.external_id,
        u.social_name,
        u."name",
        am.external_id,
        am.id,
        am."name",
        t.title,
        t2.title,
        ct."name",
        p.created_at,
       u.safea_user_id,
       r.safea_role,
       t.id,
       t2.id,
       am.tenant_id,
      am.ies_id) "query"
where ("plataforma_academic_main_id" is null)
 limit 200001

        at com.jaspersoft.commons.semantic.dsimpl.JRQueryDataSet$JRDataSetIterator.next(JRQueryDataSet.java:439)
        at com.jaspersoft.commons.datarator.EhCachedData.fetchData(EhCachedData.java:181)
        ... 21 more
Caused by: java.lang.NullPointerException

2022-08-24T16:04:44,660 ERROR StrategyAwareAdhocQueryExecuter,Student access to the objects subreports #1:93 - Error while executing Ad Hoc query com.jaspersoft.jasperserver.api.CacheDatasetException: exception getting dataset from cache
        at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:145)
        at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:81)
        at com.jaspersoft.ji.adhoc.strategy.CommonDomainDataStrategy.getWorkingDataSet(CommonDomainDataStrategy.java:1290)     
        at com.jaspersoft.ji.adhoc.strategy.CompiledDomainQuery.getWorkingDataSet(CompiledDomainQuery.java:109)
        at com.jaspersoft.ji.adhoc_engine.execution.AppQueryExecutor.executeQuery(AppQueryExecutor.java:140)
        at com.jaspersoft.ji.adhoc_engine.execution.AppQueryExecutor.executeQuery(AppQueryExecutor.java:79)
        at com.jaspersoft.ji.adhoc_engine.execution.AppQueryExecutor.executeQuery(AppQueryExecutor.java:57)
        at com.jaspersoft.ji.adhoc.strategy.StrategyAwareAdhocQueryExecuter.createDatasource(StrategyAwareAdhocQueryExecuter.java:82)
        at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1263)
        at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:732)
        at net.sf.jasperreports.engine.fill.BaseReportFiller.setParameters(BaseReportFiller.java:457)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:585)
        at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:414)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:826)
        at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:61)
        at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:221)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.jaspersoft.commons.dataset.DataSetException: Failed fetching dataset
        at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getCachedData(BaseDataSetCacheImpl.java:326)
        at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getWorkingDataSet(BaseDataSetCacheImpl.java:301)
        at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:108)
        ... 18 more
Caused by: com.jaspersoft.commons.dataset.DataSetException: exception fetching data
        at com.jaspersoft.commons.datarator.EhCachedData.fetchData(EhCachedData.java:220)
        at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getCachedData(BaseDataSetCacheImpl.java:311)

eduardo.hssi's picture
Joined: Aug 12 2022 - 12:33pm
Last seen: 7 months 1 week ago

1 Answer:

There's a domain foundation for this. Variables may be changed in real time in this report. When the report is published and run with different parameters, an error is thrown because it cannot resolve the cache. The query is run successfully inside the domain dordle and the results are returned.

coalitionstrengthen's picture
Joined: Oct 5 2022 - 6:20pm
Last seen: 5 months 4 weeks ago
Feedback
randomness