[ 
https://issues.apache.org/jira/browse/OAK-1842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14627769#comment-14627769
 ] 

Francesco Mari commented on OAK-1842:
-------------------------------------

The {{SegmentWriter}} groups blobs in three groups: small, medium and large. 
Small and medium blobs are always inlined in the segment store, and the 
{{BlobStore}}, if there is one, is never used. For larghe blobs, the behaviour 
of the {{SegmentWriter}} differs, depending if a {{BlobStore}} is used. 

If there is no {{BlobStore}}, the blob has to be stored in the TAR files. In 
this case, the TAR storage systems allows very large blobs (larger than you can 
actually store in your hard drive). 

If a {{BlobStore}} is configured, the blob is passed to it and the {{BobStore}} 
just returns a reference to it. The reference is represented by a {{String}}. 
The bug affected this case, because the length of the reference string was not 
validated properly before writing it.

> ISE: "Unexpected value record type: f2" is thrown when FileBlobStore is used
> ----------------------------------------------------------------------------
>
>                 Key: OAK-1842
>                 URL: https://issues.apache.org/jira/browse/OAK-1842
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: blob
>    Affects Versions: 1.0
>            Reporter: Konrad Windszus
>            Assignee: Francesco Mari
>              Labels: resilience
>             Fix For: 1.3.3
>
>
> The stacktrace of the call shows something like
> {code}
> 20.05.2014 11:13:07.428 *ERROR* [OsgiInstallerImpl] 
> com.adobe.granite.installer.factory.packages.impl.PackageTransformer Error 
> while processing install task.
> java.lang.IllegalStateException: Unexpected value record type: f2
> at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentBlob.length(SegmentBlob.java:101)
> at 
> org.apache.jackrabbit.oak.plugins.value.BinaryImpl.getSize(BinaryImpl.java:74)
> at 
> org.apache.jackrabbit.oak.jcr.session.PropertyImpl.getLength(PropertyImpl.java:435)
> at 
> org.apache.jackrabbit.oak.jcr.session.PropertyImpl.getLength(PropertyImpl.java:376)
> at 
> org.apache.jackrabbit.vault.packaging.impl.JcrPackageImpl.getPackage(JcrPackageImpl.java:324)
> {code}
> The blob store was configured correctly and according to the log also 
> correctly initialized
> {code}
> 20.05.2014 11:11:07.029 *INFO* [FelixStartLevel] 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService 
> Initializing SegmentNodeStore with BlobStore 
> [org.apache.jackrabbit.oak.spi.blob.FileBlobStore@7e3dec43]
> 20.05.2014 11:11:07.029 *INFO* [FelixStartLevel] 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService Component 
> still not activated. Ignoring the initialization call
> 20.05.2014 11:11:07.077 *INFO* [FelixStartLevel] 
> org.apache.jackrabbit.oak.plugins.segment.file.FileStore TarMK opened: 
> crx-quickstart/repository/segmentstore (mmap=true)
> {code}
> Under which circumstances can the length within the SegmentBlob be invalid?
> This only happens if a File Blob Store is configured 
> (http://jackrabbit.apache.org/oak/docs/osgi_config.html). If a file datastore 
> is used, there is no such exception.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to