On Mon, May 19, 2014 at 3:29 PM, Marc Pfaff <pfa...@adobe.com> wrote:
> For SegmentNodeStore my research
> ends up in FileBlobStore and for the DocumentNodeStore it appears to be
> the MongoBlobStore. Is that correct?

SegementNodeStore does not uses BlobStore by default. Instead all the
binary content is stored as part of segment data itself. Sofollowing
points can be noted for BlobStore

1. SegmentNodeStore does not require BlobStore by default
2. DocumentNodeStore uses MongoBlobStore by default
3. Both can be configured to use a BlobStore via OSGi config

>* I was only able to find the FileBlobStoreService that registers the
> FileBlobStore as an OSGi service. I was not able to find more BlobStore
> implementations to be exposed in OSGi. Are there any more? And how about
> the MongoBlobStore in particular?

MongoBlobStore is not configured as an explicit service instead is
used as the default fallback option if no other BlobStore is
configured. As it just requires Mongo connection detail, it is
currently configured along with MongoDocumentStore in
DocumentNodeStore

There is AbstractDataStoreService which wraps JR2 DataStore as
BlobStore and configures and registers them with OSGi. it currently
support FileDataStore and S3DataStore.

Note that FileDataStore is currently preferred over FileBlobStore

> The DocumentNodeStoreService references the  same blob store service as
> the SegmentNodeStoreService. As I'm not able to find the MongoBlobStore
> exposed as service, does that mean the DocumentNodeStore uses the
> FileBlobStore

No. The MongoBlobStore is configured implicitly in
org.apache.jackrabbit.oak.plugins.document.DocumentMK.Builder#setMongoDB(com.mongodb.DB,
int). So unless a BlobStore is explicitly configured DocumentNodeStore
would use MongoBlobStore.

> Both, the SegmentNodeStoreService and the DocumentNodeStoreService
> appear to check for 'custom blob store' property but both components do
> not expose such a property? And how would they select from a specific
> BlobStore service?

Here there is an assumption that system has only one BlobStore
registered with OSGi Service Registry. If multiple BlobStore services
are registered then you can possibly specify a specific one by
configuring the 'blobStore.target' to the required OSGi service filter
(DS 112.6 of OSGi Compedium)

Chetan Mehrotra

Reply via email to