Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-3107

SegmentWriter should be able to store blob IDs longer than 4096 bytes

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.0.18, 1.2.3, 1.3.3, 1.4
    • None
    • None

    Description

      The SegmentWriter is able to store blob IDs that are no longer than 4096 bytes, but some implementation of BlobStore may return blob IDs 4096 bytes long (or more).

      It should be possible to use a different encoding for long blob IDs. The blob IDs should be written as a string (using SegmentWriter#writeString), and its reference ID embedded into a value record.

      The encoding in this case should be something like the following:

      11110 + 3bit + 3byte
      

      where the three least significant bits of the first bytes are actually unused, and the three bytes are used to store the record ID of the string representing the blob ID.

      This new encoding is necessary to maintain backwards compatibility with the current way of storing blob IDs and to give a way to SegmentBlob to recognise this new encoding.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            mduerig Michael Dürig
            frm Francesco Mari
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment