[Mondrian] Streaming results patch
ken.ganong at truvenhealth.com
Thu Jan 8 17:21:16 EST 2015
I've submitted a pull request<https://github.com/olap4j/olap4j-xmlaserver/pull/12> for the olap4j-xmlaserver project for streaming execute results. The goal of this patch is to reduce the memory requirements for the XML/A server when processing large query results.
I attempted in this patch to reduce the changes to interfaces as well as public and protected methods of classes in order not to break any extensions of these interfaces that exist in Mondrian or elsewhere. I only changed one protected method, I added a 'context' parameter to the marshallSoapMessage method of XmlaServlet.
I also made streaming results an option (specified by a servlet init parameter) rather than the default method of conveying results. The primary reason for this is because there is an inherent trade-off when streaming results--you cannot send an XML/A Fault message once you've started streaming. The onus is on the client to determine that there was a problem even though the HTTP status was set to a 200 (OK). Of course, this is the same logic that the client should have in case its connection to the XML/A server disappears half-way through receiving results.
One result of this is that turning on streaming results is safer when you are using SOAP instead of JSON. If an exception occurs during streaming results in SOAP, then the end of the SOAP envelope is never sent and the client can properly determine that something went wrong.
I'm interested in any feedback on the approaches I've taken in the source code and in submitting these pull requests.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Mondrian