Bug 844407

Summary: REST api raw export as JSON fails for Oracle backend
Product: [Other] RHQ Project Reporter: Heiko W. Rupp <hrupp>
Component: Core ServerAssignee: Heiko W. Rupp <hrupp>
Status: CLOSED CURRENTRELEASE QA Contact: Mike Foley <mfoley>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 4.4CC: ccrouch, hrupp
Target Milestone: ---   
Target Release: JON 3.1.1   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 837216 Environment:
Last Closed: 2013-09-03 15:10:54 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 837216    
Bug Blocks:    

Description Heiko W. Rupp 2012-07-30 13:57:52 UTC
+++ This bug was initially created as a clone of Bug #837216 +++

For Oracle databases exporting raw metrics fails because of 

if (!rs.isLast()) in 
org.rhq.enterprise.server.rest.MetricHandlerBean.RawNumericStreamingOutput#write
as Oracle needs a special open mode for this cursor to use.

A working solution is changing
ps = connection.prepareStatement( sb.toString() );
to be
ps = connection.prepareStatement( sb.toString(), 
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );

It is not yet clear though if that has any performance impact and if there is a 
better solution.

We could run a count-query first and then loop, but effectively this means 
double work on the database too.

--- Additional comment from hrupp on 2012-07-03 03:47:56 EDT ---

One could probably defer writing the ',' to the start of the inner loop when 
rs.next() is true.

boolean needsComma = false;
while (rs.next()) {
   if (needsComma) 
          pw.write(",");
   needsComma = true;
   pw.write("{");
   ...
}

--- Additional comment from hrupp on 2012-07-03 06:55:30 EDT ---

master bbf48d7

Comment 1 Heiko W. Rupp 2012-07-30 15:44:25 UTC
release branch 679c8d573f29

Comment 2 John Sanda 2012-08-02 18:51:48 UTC
JON 3.1.1 ER1 build is available. Moving to ON_QA.

https://brewweb.devel.redhat.com/buildinfo?buildID=226942

Comment 4 Heiko W. Rupp 2013-09-03 15:10:54 UTC
Bulk closing of old issues in VERIFIED state.