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

Tomek Rękawek edited comment on OAK-7659 at 7/30/18 9:11 AM:
-------------------------------------------------------------

Thanks for finding this. Looks good to me!

 

/update: Aha, already merged, it's good :) 


was (Author: tomek.rekawek):
Thanks for finding this. Looks good to me!

> AzureJournalWriter#truncate wrongly removes the journal file
> ------------------------------------------------------------
>
>                 Key: OAK-7659
>                 URL: https://issues.apache.org/jira/browse/OAK-7659
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: segment-tar
>    Affects Versions: 1.9.6
>            Reporter: Andrei Dulceanu
>            Assignee: Andrei Dulceanu
>            Priority: Major
>         Attachments: OAK-7659.patch
>
>
> When running OffRC for an Azure Segment Store, compaction fails every time 
> when trying to write the new head in the journal file. Here are the relevant 
> last lines from the log:
> {noformat}
> 07:34:16.490 [main] INFO  o.a.j.oak.segment.file.FileStore - TarMK GC #0: 
> compaction cycle 0 completed in 7.523 min (451351 ms). Compacted 
> e077e35d-614d-4948-a577-4647340f6884.00000ac8 to 
> d9b92653-01d7-4577-afff-b93a18b0799e.000018f9
> 07:34:16.538 [main] INFO  o.a.j.oak.segment.file.FileStore - TarMK GC #0: 
> compaction succeeded in 7.523 min (451399 ms), after 0 cycles
>     -> cleaning up
> 07:34:16.577 [main] INFO  o.a.j.oak.segment.file.FileStore - TarMK GC #0: 
> cleanup started using reclaimer (full generation older than 1.1, with 1 
> retained generations)
> 07:34:18.857 [main] INFO  o.a.j.oak.segment.file.FileStore - TarMK GC #0: 
> cleanup marking files for deletion: 
> data00000a.tar,data00001a.tar,data00002a.tar,data00003a.tar,data00004a.tar,data00005a.tar,data00006a.tar,data00007a.tar
> 07:34:18.918 [main] INFO  o.a.j.oak.segment.file.FileStore - TarMK GC #0: 
> cleanup completed in 2.341 s (2340 ms). Post cleanup size is 1.7 GB 
> (1688201323 bytes) and space reclaimed 2.0 GB (2033904890 bytes).
>     -> writing new journal.log: d9b92653-01d7-4577-afff-b93a18b0799e:6393 
> root 1532504059089
> 07:35:44.853 [main] INFO  o.a.j.oak.segment.file.FileStore - TarMK closed: 
> /tmp/1532503601738-0
> {noformat}
> The complete stacktrace below:
> {noformat}
> java.io.IOException: com.microsoft.azure.storage.StorageException: The 
> specified blob does not exist.
>         at 
> org.apache.jackrabbit.oak.segment.azure.AzureJournalFile$AzureJournalWriter.writeLine(AzureJournalFile.java:176)
>         at 
> org.apache.jackrabbit.oak.segment.azure.tool.AzureCompact.run(AzureCompact.java:226)
>         at 
> org.apache.jackrabbit.oak.run.CompactCommand.execute(CompactCommand.java:74)
>         at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
> Caused by: com.microsoft.azure.storage.StorageException: The specified blob 
> does not exist.
>         at 
> com.microsoft.azure.storage.StorageException.translateFromHttpStatus(StorageException.java:175)
>         at 
> com.microsoft.azure.storage.StorageException.translateException(StorageException.java:94)
>         at 
> com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:305)
>         at 
> com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:175)
>         at 
> com.microsoft.azure.storage.blob.CloudBlob.downloadAttributes(CloudBlob.java:1197)
>         at 
> com.microsoft.azure.storage.blob.CloudAppendBlob.openOutputStreamInternal(CloudAppendBlob.java:904)
>         at 
> com.microsoft.azure.storage.blob.CloudAppendBlob.openWriteExisting(CloudAppendBlob.java:794)
>         at 
> com.microsoft.azure.storage.blob.CloudAppendBlob.append(CloudAppendBlob.java:560)
>         at 
> com.microsoft.azure.storage.blob.CloudAppendBlob.appendFromByteArray(CloudAppendBlob.java:630)
>         at 
> com.microsoft.azure.storage.blob.CloudAppendBlob.appendText(CloudAppendBlob.java:746)
>         at 
> com.microsoft.azure.storage.blob.CloudAppendBlob.appendText(CloudAppendBlob.java:709)
>         at 
> org.apache.jackrabbit.oak.segment.azure.AzureJournalFile$AzureJournalWriter.writeLine(AzureJournalFile.java:173)
>         ... 3 more
> {noformat}
> Relevant lines in {{AzureCompaction}} code are:
> {noformat}
> try (JournalFileWriter journalWriter = journal.openJournalWriter()) {
>   System.out.printf("    -> writing new %s: %s\n", journal.getName(), head);
>   journalWriter.truncate();
>   journalWriter.writeLine(head);
> }
> {noformat}
> Because in the current implementation, {{AzureJournalWriter}} just removes 
> all internal append blobs into which the journal is split, writing the new 
> head always fails.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to