Bug 618659

Summary: bundle upload does not work when using embedded H2 database
Product: [Other] RHQ Project Reporter: John Mazzitelli <mazz>
Component: ProvisioningAssignee: Jay Shaughnessy <jshaughn>
Status: CLOSED CURRENTRELEASE QA Contact: Rajan Timaniya <rtimaniy>
Severity: high Docs Contact:
Priority: low    
Version: 3.0.0CC: jshaughn, rtimaniy
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: 4.0.0 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-09-02 03:23:56 EDT Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Description John Mazzitelli 2010-07-27 09:41:55 EDT
install RHQ with the embedded H2 database option. try to upload a bundle distribution file and you get an exception. We haven't done any H2 testing in a while so it doesn't surprise me this is broken. I heard that uploading just the recipe and following the create wizard to individually unload the bundle files works around this problem - but it is unknown what other bundle-related activities fail on H2.
Comment 1 John Mazzitelli 2010-07-27 10:45:47 EDT
I think H2 is trying to tell us something :)

ERROR [ContentManagerBean] An error occurred while updating Blob with stream for PackageBits[10001], Feature not supported: LOB update [50100-117]
ERROR [STDERR] org.h2.jdbc.JdbcSQLException: Feature not supported: LOB update [50100-117]
ERROR [STDERR] 	at org.h2.message.Message.getSQLException(Message.java:105)
ERROR [STDERR] 	at org.h2.message.Message.getSQLException(Message.java:116)
ERROR [STDERR] 	at org.h2.message.Message.getSQLException(Message.java:75)
ERROR [STDERR] 	at org.h2.message.Message.getUnsupportedException(Message.java:161)
ERROR [STDERR] 	at org.h2.jdbc.JdbcBlob.setBinaryStream(JdbcBlob.java:173)
ERROR [STDERR] 	at org.rhq.enterprise.server.content.ContentManagerBean.updateBlobStream(ContentManagerBean.java:1672)
ERROR [STDERR] 	at org.rhq.enterprise.server.content.ContentManagerBean.loadPackageBits(ContentManagerBean.java:1614)
ERROR [STDERR] 	at org.rhq.enterprise.server.content.ContentManagerBean.createPackageVersion(ContentManagerBean.java:1241)
Comment 2 John Mazzitelli 2010-07-27 11:18:53 EDT
see this thread:

http://groups.google.com/group/h2-database/browse_thread/thread/96a2d8ad8a527c6b/3fd9379b4375aa8b

specifically the email dated in May of 2010:

"Yes, that's true, this is not supported yet... Unfortunately I
can't tell you when it will be implemented. I'm afraid it's unlikely
that it will be implemented this year."

Therefore, if you use H2 with RHQ, you will not be able to use provisioning. This really only affects demos and testing because H2 is not one of our supported DBs in production.
Comment 3 Jay Shaughnessy 2010-08-05 22:49:10 EDT
Fix commit: 0ffb52081be378fcdcbbec84aea534a65969fe2d

Add H2 specific handling that avoids streaming blob update and instead uses byte[] logic.  Of course, not good for large data but that should be ok for H2 use in demos etc.  This can be removed if/when H2 adds the required support.

This seems to fix the bundle issue but the changes are actually at the PackageVersion handling, which should be applicable to other content-related use cases as well.
Comment 4 Rajan Timaniya 2010-10-18 08:24:47 EDT
Verified on RHQ-Master build #418
(http://hudson-qe.rhq.rdu.redhat.com:8080/view/RHQ/job/ci-rhq-master/418/)

Installed RHQ on H2DB
Created new bundle (using upload bundle)

Observation:
Bundle upload works fine with embedded H2 database.
Comment 5 Heiko W. Rupp 2013-09-02 03:23:56 EDT
Bulk closing of issues that were VERIFIED, had no target release and where the status changed more than a year ago.