Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 339446 - Calling org.eclipse.birt.report.engine.api.IEngineTask.cancel() will not interrupt result set caching
Summary: Calling org.eclipse.birt.report.engine.api.IEngineTask.cancel() will not inte...
Status: RESOLVED FIXED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: BIRT (show other bugs)
Version: 2.6.1   Edit
Hardware: All All
: P3 normal with 21 votes (vote)
Target Milestone: 3.7.0   Edit
Assignee: Mingxia Wu CLA
QA Contact: Xiaoying Gu CLA
URL:
Whiteboard: Obsolete
Keywords:
Depends on:
Blocks:
 
Reported: 2011-03-09 17:58 EST by Scott Hamilton CLA
Modified: 2011-04-24 23:30 EDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Scott Hamilton CLA 2011-03-09 17:58:33 EST
Build Identifier: 2.6.1

If the query a report uses ends up processing too many rows, a lot of time and memory can be consumed by BIRT's result set caching.  Calling cancel() on the IEngineTask should be (a) ok to call from another thread, and (b) effective in aborting any portion of BIRT's java-side execution of the report.

Reproducible: Always

Steps to Reproduce:
1. Create a report that will process many (10^5 or more) rows.
2. Start the report (using the Java APIs) in a separate thread.
3. Call cancel() on the IEngineTask that you used to start the report.

You'll see that the cancel will not take effect until the result set caching has concluded.

Note that unless you have configured BIRT to limit how much memory is used by the memory caching, this will consume as much heap space as is available if it can.  With millions of rows, this will likely result in an OutOfMemory error.  While this is not strictly related to the fact that cancel() does not work during this caching, it's something to be aware of when doing testing on this issue, and exacerbates the severity of the inability to cancel reports during this resource-hungry phase.
Comment 1 Lin Zhu CLA 2011-03-12 03:35:04 EST
org.eclipse.birt.data.engine.executor.dscache.DataSetToCache.saveDataSetResult(IResultIterator) Should be enhanced so that response to user's cancellation operation.
Comment 2 xiaofeng zhang CLA 2011-04-21 02:25:59 EDT
This bug should have been fixed in Birt2.6.2.