Reports throughin Exception when doing traffic based reports and store-by-group
Description
Acceptance / Success Criteria
Lucidchart Diagrams
Activity
Donald Desloge April 15, 2011 at 3:43 PM
There's a utility class that we wrote for the reports that now checks to see if storeByGroup is turned on or not. You can now use storeByGroup with the reports.
Donald Desloge February 23, 2011 at 4:34 PM
The above comment is about the above implementation and not the RrdToolDataSource stuff you were working on. Hope that is more clear.
Benjamin Reed February 23, 2011 at 4:31 PM
Definitely use getExtension() because we have some legacy customers who are using jrobin, but with files called ".rrd"
Donald Desloge February 23, 2011 at 4:28 PM
Alejandro,
That makes sense. So, one of the goals I had with the Jasper reports it to make sure that its easy to open and run the reports in iReport if users wanted to customize the reports. In the above case would we need to rely on the opennms-rrd-api module and others?
Alejandro Galue February 23, 2011 at 4:15 PM
The modification for JRobinDirectoryUtil could be replace the text ".jrb" with:
String extension = RrdConfig.getProperties().getProperty("org.opennms.rrd.strategyClass", "UnknownStrategy").endsWith("JRobinRrdStrategy") ? ".jrb" : ".rrd";
or
String extension = RrdUtils.getExtension();
Then, the implementation of OnmsQueryExecutorFactoryBundle could be:
public class OnmsQueryExecutorFactoryBundle implements QueryExecuterFactoryBundle {
public String[] getLanguages() {
return new String[] {"jrobin"};
}
public JRQueryExecuterFactory getQueryExecuterFactory(String language) throws JRException {
boolean isJrobin = RrdConfig.getProperties().getProperty("org.opennms.rrd.strategyClass", "UnknownStrategy").endsWith("JRobinRrdStrategy");
// or boolean isJrobin = RrdUtils.getExtension().equals(".jrb");
return isJobin ? new JRobinQueryExecutorFactory() : RrdtoolQueryExecutorFactory();
}
}
Make sense ?
Details
Assignee
Donald DeslogeDonald DeslogeReporter
Mike HuotMike HuotLabels
Components
Affects versions
Priority
Major
Details
Details
Assignee
Reporter
Labels
Components
Affects versions
Priority
PagerDuty
PagerDuty Incident
PagerDuty
PagerDuty Incident
PagerDuty

I'm getting the following exception when trying to run any of the
traffic type reports -
net.sf.jasperreports.engine.JRRuntimeException:
net.sf.jasperreports.engine.JRException: Error creating JRobinDataSource
at
net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport
.java:711)
at
net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(
JRFillElementContainer.java:329)
at
net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:419)
at
net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:378)
at
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerti
calFiller.java:2035)
at
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalF
iller.java:760)
at
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportContent(JRVe
rticalFiller.java:290)
at
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalF
iller.java:132)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946
)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845
)
at
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
at
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManag
er.java:417)
at
org.opennms.reporting.jasperreports.svclayer.JasperReportService.runAndR
ender(JasperReportService.java:221)
at
org.opennms.reporting.core.svclayer.support.DefaultReportWrapperService.
runAndRender(DefaultReportWrapperService.java:282)
at
org.opennms.web.controller.OnlineReportController.onSubmit(OnlineReportC
ontroller.java:120)
at
org.springframework.web.servlet.mvc.SimpleFormController.processFormSubm
ission(SimpleFormController.java:272)
at
org.springframework.web.servlet.mvc.AbstractFormController.handleRequest
Internal(AbstractFormController.java:268)
at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(Abs
tractController.java:153)
at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handl
e(SimpleControllerHandlerAdapter.java:48)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherS
ervlet.java:771)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherSe
rvlet.java:716)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(Framewor
kServlet.java:644)
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet
.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHan
dler.java:1166)
at
org.extremecomponents.table.filter.AbstractExportFilter.doFilter(Abstrac
tExportFilter.java:49)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHan
dler.java:1157)
at
org.opennms.web.StoreRequestPropertiesFilter.doFilter(StoreRequestProper
tiesFilter.java:80)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHan
dler.java:1157)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:378)
at
org.opennms.web.springframework.security.AuthFilterEnabler.doFilterHttp(
AuthFilterEnabler.java:110)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.intercept.web.FilterSecurityInterceptor.inv
oke(FilterSecurityInterceptor.java:109)
at
org.springframework.security.intercept.web.FilterSecurityInterceptor.doF
ilter(FilterSecurityInterceptor.java:83)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.ui.SessionFixationProtectionFilter.doFilter
Http(SessionFixationProtectionFilter.java:67)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(
ExceptionTranslationFilter.java:101)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.providers.anonymous.AnonymousProcessingFilt
er.doFilterHttp(AnonymousProcessingFilter.java:105)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.wrapper.SecurityContextHolderAwareRequestFi
lter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilter
Http(BasicProcessingFilter.java:174)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(Ab
stractProcessingFilter.java:278)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutF
ilter.java:89)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.context.HttpSessionContextIntegrationFilter
.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecu
rityFilter.java:53)
at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.do
Filter(FilterChainProxy.java:390)
at
org.springframework.security.util.FilterChainProxy.doFilter(FilterChainP
roxy.java:175)
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Dele
gatingFilterProxy.java:237)
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(Delegating
FilterProxy.java:167)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHan
dler.java:1157)
at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFil
terInternal(OpenSessionInViewFilter.java:198)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequ
estFilter.java:76)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHan
dler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:2
16)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.jav
a:114)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.j
ava:943)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
at
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
410)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java
:582)
Caused by: net.sf.jasperreports.engine.JRException: Error creating
JRobinDataSource
at
org.opennms.netmgt.jasper.jrobin.JRobinQueryExecutor.createDatasource(JR
obinQueryExecutor.java:30)
at
net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRF
illDataset.java:684)
at
net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillData
set.java:605)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller
.java:1281)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:901
)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845
)
at
net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSub
report.java:609)
at
net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunn
able.java:59)
at
net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSub
reportRunner.java:205)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.jrobin.core.RrdException: Invalid DEF syntax:
DEF:xx=/opt/opennms/share/rrd/snmp/2999/Virt___
at
org.opennms.netmgt.jasper.jrobin.RrdXportCmd.parseDef(RrdXportCmd.java:7
5)
at
org.opennms.netmgt.jasper.jrobin.RrdXportCmd.execute(RrdXportCmd.java:40
)
at
org.opennms.netmgt.jasper.jrobin.RrdToolCmd.executeCommand(RrdToolCmd.ja
va:38)
at
org.opennms.netmgt.jasper.jrobin.JRobinQueryExecutor.createDatasource(JR
obinQueryExecutor.java:28)
... 9 more
Caused by: net.sf.jasperreports.engine.JRException: Error creating
JRobinDataSource
at
org.opennms.netmgt.jasper.jrobin.JRobinQueryExecutor.createDatasource(JR
obinQueryExecutor.java:30)
at
net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRF
illDataset.java:684)
at
net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillData
set.java:605)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller
.java:1281)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:901
)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845
)
at
net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSub
report.java:609)
at
net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunn
able.java:59)
at
net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSub
reportRunner.java:205)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.jrobin.core.RrdException: Invalid DEF syntax:
DEF:xx=/opt/opennms/share/rrd/snmp/2999/Virt___
at
org.opennms.netmgt.jasper.jrobin.RrdXportCmd.parseDef(RrdXportCmd.java:7
5)
at
org.opennms.netmgt.jasper.jrobin.RrdXportCmd.execute(RrdXportCmd.java:40
)
at
org.opennms.netmgt.jasper.jrobin.RrdToolCmd.executeCommand(RrdToolCmd.ja
va:38)
at
org.opennms.netmgt.jasper.jrobin.JRobinQueryExecutor.createDatasource(JR
obinQueryExecutor.java:28)
... 9 more
Caused by: org.jrobin.core.RrdException: Invalid DEF syntax:
DEF:xx=/opt/opennms/share/rrd/snmp/2999/Virt___
at
org.opennms.netmgt.jasper.jrobin.RrdXportCmd.parseDef(RrdXportCmd.java:7
5)
at
org.opennms.netmgt.jasper.jrobin.RrdXportCmd.execute(RrdXportCmd.java:40
)
at
org.opennms.netmgt.jasper.jrobin.RrdToolCmd.executeCommand(RrdToolCmd.ja
va:38)
at
org.opennms.netmgt.jasper.jrobin.JRobinQueryExecutor.createDatasource(JR
obinQueryExecutor.java:28)
at
net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRF
illDataset.java:684)
at
net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillData
set.java:605)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller
.java:1281)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:901
)
at
net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845
)
at
net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSub
report.java:609)
at
net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunn
able.java:59)
at
net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSub
reportRunner.java:205)
at java.lang.Thread.run(Thread.java:662)
I'm not sure what it was trying to do, here is an ls of the jrb
directory -
[root@cponms1 report-templates]# ls /opt/opennms/share/rrd/snmp/2999/
ds.properties mib2-tcp.jrb
GigabitEthernet0_0_1-000b854318a3 Unit__0_Slot_0_Port__1-
000b854318a3
GigabitEthernet0_0_2-000b854318a4 Unit__0_Slot_0_Port__2-
000b854318a4
GigabitEthernet0_0_3-000b854318a5 Unit__0_Slot_0_Port__3-
000b854318a5
GigabitEthernet0_0_4-000b854318a6 Unit__0_Slot_0_Port__4-
000b854318a6
mib2-icmp.jrb Virtual_Interface-000b854318a3
[root@cponms1 report-templates]#
Jeffg said -
That's because you're using that [censored] store-by-group persistence strategy
Delivery time was at a premium when we built the JRobin JRDataSource, so we didn't build in support for store-by-group. That's why it's crapping out.
I just asked Donald about this, and he thought of a workaround for the specific case of the interface traffic reports. If you look at the report definition, you'll see that it first looks for an ifHCInOctets.jrb but backs off to ifInOctets.jrb if the HC one doesn't exist. It should be a simple case of also first trying to open mib2-X-interfaces.jrb and locate the ifHCInOctets DS, backing off to mib2-interfaces.jrb and its ifInOctets DS. I don't like it as a solution for several reasons, but as a workaround it seems, well, workable.