When a external BlobStore is configured with SegmentNodeStore then blob can exist in 3 forms
- Blob inlined in segment storage - If blob length is <= 16512 then blob would be inlined in segment store
- Blob inlined in BlobStore - Most BlobStore implementation also support inlining of blob content as part of blobId if the size is less than certain threshold. For FileDataStore this is determined by minRecordLength. If this is less than #1 then such a case would not happen
- Blob whose content are stored in BlobStore without inlining
Currently SegmentBlob returns recordId for getContentIdentity call for inlined blobs. This would cause this value to change if same blob is stored in a different segmentstore. As discussed here this causes ambiguity in certain cases.
Given that getContentIdentity can return null it would be better if SegmentBlob returns null for inlined blob.