protected void cancelSubreportFill() throws JRException { if (log.isDebugEnabled()) { log.debug("Fill " + filler.fillerId + ": cancelling " + subreportFiller.fillerId); } // marking the subreport filler for interruption subreportFiller.setInterrupted(true); synchronized (subreportFiller) { // forcing the creation of a new thread and a new subreport filler runner.cancel(); runner.reset(); } filler.unregisterSubfiller(subreportFiller); }