Advisories for OGSA-DAI WSRF 1.0
The following advisories have been issued:
- Problems retrieving BLOBS
- DeliverToStream activity is broken
- Client toolkit asynchronous result set broken
Problems retrieving BLOBS
When trying to retrieve BLOBs from a relational database you get zero rows returned (or an error). The following error message will be logged:
Base64Provider has not been set up with a Base64 implementation
This will be fixed in the next release. In the meantime if you have the source version of the release, you can correct this bug by changing the following two files and rebuilding OGSA-DAI:
-
At the bottom of the
initialise() method in
uk/org/ogsadai/service/wsrf/dataservice/impl/DataServiceImpl.java,
change the following old code:
... LOG.error(msg); } } if (LOG.isDebugEnabled()) { LOG.debug(\"Exiting initialise.\"); } mInitialised = true; }to the following new code:... LOG.error(msg); } } // Create a PlatformConfigurator to use for Base64 encoding new uk.org.ogsadai.common.wsrf.WSRFPlatformConfigurator(); if (LOG.isDebugEnabled()) { LOG.debug(\"Exiting initialise.\"); } mInitialised = true; } -
In the two contructor methods in
uk/org/ogsadai/client/toolkit/wsrf/WSRFDataService.java,
change the following old code:
public WSRFDataService(String handle) throws MalformedURLException { mService = new WSRFDataServiceStub(handle); mTransport = null; mResource = null; } ... public WSRFDataService(String handle, ResourceID resourceID) throws ServiceCommsException, MalformedURLException { mService = new WSRFDataServiceStub(handle); mResource = resourceID; }to the following new code:public WSRFDataService(String handle) throws MalformedURLException { mService = new WSRFDataServiceStub(handle); mTransport = null; mResource = null; new uk.org.ogsadai.common.wsrf.WSRFPlatformConfigurator(); } ... public WSRFDataService(String handle, ResourceID resourceID) throws ServiceCommsException, MalformedURLException { mService = new WSRFDataServiceStub(handle); mResource = resourceID; new uk.org.ogsadai.common.wsrf.WSRFPlatformConfigurator(); }
DeliverToStream activity is broken
The DeliverToStream activity has a bug in the WSRF implementation. The service URL passed to the servlet is 'null' rather than the correct URL. Thus where the documentation says the data will be available from a URL of the form:
http://host:port/ogsa/servlet/DeliverToStreamServlet? url=http://host:port/ogsa/ogsadai/DataService& streamId=NAME
It will actually be available from a URL in the form:
http://host:port/ogsa/servlet/DeliverToStreamServlet?url=null&streamId=NAME
This will be fixed for the next release.
Client toolkit asynchronous result set broken
The ResultSet object returned by the getResultSet method of the OutputStreamActivity class do not work for WSRF 1.0. This is because the code attempts to use the getNBlocks service operation which is not implemented in WSRF 1.0. This will be fixed in our next release.
There are two possible work arounds to this problem:
- Use synchronous delivery. The ResultSet returned by the getResultSet() method of the SQLQuery activity does work.
- Alter the client toolkit code to use the getBlock() service operation instead. Unfortunately this option will be very slow because only one row of data will be retrieved at a time.