Opened 11 years ago

Last modified 10 years ago

#730 closed defect

GetCapabilities fails if a coverage is registered in petascope but not in rasdaman — at Version 2

Reported by: Dimitar Misev Owned by: Piero Campalani
Priority: major Milestone: 9.0.x
Component: petascope Version: development
Keywords: Cc: Jelmer Oosthoek
Complexity: Easy

Description (last modified by Dimitar Misev)

E.g.

Caused by: RasdamanRequestFailed: Error evaluating rasdaman query: 'select sdom(c)[0]from ba378x AS c where oid(c) = 2574337
	at petascope.util.ras.RasUtil.executeRasqlQuery(RasUtil.java:143)
	at petascope.util.ras.RasUtil.executeRasqlQuery(RasUtil.java:78)
	at petascope.core.DbMetadataSource.getIndexDomain(DbMetadataSource.java:1860)
	... 24 more
Caused by: org.odmg.QueryException: Execution error 355 in line 1, column 23, near token ba378x: Collection name is unknown.
	at rasj.odmg.RasOQLQuery.execute(RasOQLQuery.java:249)
	at petascope.util.ras.RasUtil.executeRasqlQuery(RasUtil.java:136)
	... 26 more
 ERROR [02:37:16] GetCapabilitiesHandler@342: Petascope error
InternalComponentError: Error while executing RasQL query
	at petascope.util.WcsUtil.getMetadata(WcsUtil.java:109)
	at petascope.wcs2.parsers.GetCoverageMetadata.<init>(GetCoverageMetadata.java:92)
	at petascope.wcs2.handlers.GetCapabilitiesHandler.handle(GetCapabilitiesHandler.java:294)
	at petascope.wcs2.handlers.GetCapabilitiesHandler.handle(GetCapabilitiesHandler.java:64)
	at petascope.wcs2.extensions.AbstractProtocolExtension.handle(AbstractProtocolExtension.java:70)
	at petascope.PetascopeInterface.handleWcs2Request(PetascopeInterface.java:614)
	at petascope.PetascopeInterface.handleWcsRequest(PetascopeInterface.java:544)
	at petascope.PetascopeInterface.doGet(PetascopeInterface.java:322)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

The error returned to the user is

<ows:ExceptionReport version="2.0.0"
    xsd:schemaLocation="http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
    xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink">
    <ows:Exception exceptionCode="InternalComponentError">
        <ows:ExceptionText>Error while executing RasQL query</ows:ExceptionText>
    </ows:Exception>

</ows:ExceptionReport>

It would be good for the errors to be combined in the ExceptionReport by including the messages of the parent exceptions, e.g.

<ows:ExceptionReport version="2.0.0"
    xsd:schemaLocation="http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
    xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink">
    <ows:Exception exceptionCode="InternalComponentError">
        <ows:ExceptionText>Error while executing RasQL query</ows:ExceptionText>
    </ows:Exception>
    <ows:Exception exceptionCode="InternalComponentError">
        <ows:ExceptionText>Error evaluating rasdaman query: 'select sdom(c)[0]from ba378x AS c where oid(c) = 2574337</ows:ExceptionText>
    </ows:Exception>
    <ows:Exception exceptionCode="InternalComponentError">
        <ows:ExceptionText>org.odmg.QueryException: Execution error 355 in line 1, column 23, near token ba378x: Collection name is unknown.</ows:ExceptionText>
    </ows:Exception>
</ows:ExceptionReport>

Should be checked if that's the right way to list several exceptions though.

Change History (2)

comment:1 by Piero Campalani, 11 years ago

It would be great. I remember of a ticket talking about embedding the message carried by parent exceptions, but my internet connection now is simply making me feel depressed so I'll look for it at a second time.

Regarding whether to file a warning or return an exception when a coverage blocks the service, we might add a parameter in petascope.properties?
I believe every service provider can choose differently on this.

comment:2 by Dimitar Misev, 11 years ago

Description: modified (diff)

Yeah the warning vs. error is not so critical here, I think returning a clearer error by merging the chain of exception is more important. I think there may have been some ticket about this, but I can't find it.

Note: See TracTickets for help on using tickets.