You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "angela (JIRA)" <ji...@apache.org> on 2008/02/19 18:10:43 UTC
[jira] Commented: (JCR-1300) spi2dav Improve performance for large
binary properties
[ https://issues.apache.org/jira/browse/JCR-1300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12570311#action_12570311 ]
angela commented on JCR-1300:
-----------------------------
please find attached a quick hack that add the following changes:
----------------------------------------------------------------------------------------------------------------------------------
spi2dav
----------------------------------------------------------------------------------------------------------------------------------
- addProperty(NodeId, Name, QValue)
sends a PUT with a StringRequestEntity or InputStreamRequestEntity.
using a custom contentType (see jcr-server)
- addProperty(NodeId, Name, QValue[])
Not changed. Still sends xml-request body with a ValuesProperty.
TODO: added instructions what need to be changed on the server in order to get rid of that.
- setValue(PropertyId, QValue)
sends a PUT with a StringRequestEntity or InputStreamRequestEntity.
using a custom contentType (see jcr-server)
TODO: PUT is not totally correct since 'setValue' should fail if the property
does not exist on the server.
- setValue(PropertyId, QValue[])
Not changed. Still makes a PROPPATCH request containing ValuesProperty
TODO: find a way to avoid the xml (see addProperty).
- getItemInfos:
since Batch-READ has not yet been implemented, the method returns the same as getNodeInfo.
Added code that builds PropertyInfo objects for jcr:uuid, jcr:primaryType and jcr:mixins
if the corresponding info is present in the NodeInfo.
- getPropertyInfo:
Changed PROPFIND request to retrieve 'length' or 'lengths' of the prop-values instead
of retrieving the values themselves.
A ValueLoader takes care of requesting the prop-values on demand and not by default.
----------------------------------------------------------------------------------------------------------------------------------
jcr-server
----------------------------------------------------------------------------------------------------------------------------------
ItemResourceConstants: defines a new constant that represent the start of the content-type
to be used, when a property-value is sent without enclosing ValueProperty.
DefaultItemCollection.addMember has been modified:
if the contentType matches the new custom content-type (see above) the request body
is not parsed into a xml-Document. instead the stream is passed to Node.setProperty
(Binary types only) or converted into a String and the passed to Node.setProperty(String, int)
Test:
i quickly let the general read, property read and property write test from the TCK run
on a setup jcr2spi-spi2dav-jcrserver.
I.e. not really tested if the modification don't break any (or are beneficial).
Jozef, could you try if that helps you? (testing is delegated to you ;)
thanks
angela
> spi2dav Improve performance for large binary properties
> -------------------------------------------------------
>
> Key: JCR-1300
> URL: https://issues.apache.org/jira/browse/JCR-1300
> Project: Jackrabbit
> Issue Type: Improvement
> Components: contrib, jackrabbit-jcr-server
> Reporter: Jozef Wagner
> Attachments: JCR-1300_jcr-server.patch, JCR-1300_spi2dav.patch
>
>
> Sending large binary properties over spi2dav is slow and requires a lot of heap space in both client and server.
> One problematic part is base64 conversion of the property value.
> On the contrary, using 'normal' webdav interface (/repository/default/ instead of /server) for uploading a file (through traditional webdav client) it is pretty fast and don't have such impact on heap space.
> Some suggestions from the previous discussion:
> - avoid temporary copies of the data, and persist large objects as early as possible.
> - transfer large objects in blocks from the Jackrabbit SPI client to the server (and back).
> - make usage of the global data store (JCR-926).
> - straight forward PUT for single-valued properties
> Link to discussion: http://www.mail-archive.com/dev@jackrabbit.apache.org/msg09481.html
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.