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

Alex Parvulescu commented on OAK-4279:
--------------------------------------

more about the external blob situation. I'm not convinced the following code 
actually works for all cases:
{code}
String reference = blob.getReference();
if (reference != null && blobStore != null) {
  String blobId = blobStore.getBlobId(reference);
  if (blobId != null) {
    return writeBlobId(blobId);
  } else {
    LOG.debug("No blob found for reference {}, inlining...", reference);
  }
}
return writeStream(blob.getNewStream());
{code}
if we follow through the code when there is no blobStore attached and for some 
reason you want to write a reference to an external blob (in this case offline 
compaction but it could also be migration I believe?) the 
{{blob.getNewStream()}} invocation will fail with an {{IllegalStateException}}, 
so this code path needs to be fixed.

> Rework offline compaction
> -------------------------
>
>                 Key: OAK-4279
>                 URL: https://issues.apache.org/jira/browse/OAK-4279
>             Project: Jackrabbit Oak
>          Issue Type: Task
>          Components: segment-tar
>            Reporter: Michael Dürig
>            Assignee: Alex Parvulescu
>            Priority: Blocker
>              Labels: compaction, gc
>             Fix For: 1.6
>
>         Attachments: OAK-4279-v0.patch, OAK-4279-v1.patch, OAK-4279-v2.patch
>
>
> The fix for OAK-3348 broke some of the previous functionality of offline 
> compaction:
> * No more progress logging
> * Compaction is not interruptible any more (in the sense of OAK-3290)
> * Offline compaction could remove the ids of the segment node states to 
> squeeze out some extra space. Those are only needed for later generations 
> generated via online compaction. 
> We should probably implement offline compaction again through a dedicated 
> {{Compactor}} class as it was done in {{oak-segment}} instead of relying on 
> the de-duplication cache (aka online compaction). 



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

Reply via email to