[
https://issues.apache.org/jira/browse/OAK-5461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15826045#comment-15826045
]
Julian Reschke edited comment on OAK-5461 at 1/17/17 1:36 PM:
--------------------------------------------------------------
{{noformat}}
Exception in thread "SnapshotThread" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at
org.apache.jackrabbit.oak.commons.FileIOUtils.append(FileIOUtils.java:156)
at
org.apache.jackrabbit.oak.plugins.blob.datastore.BlobIdTracker$BlobIdStore.merge(BlobIdTracker.java:410)
at
org.apache.jackrabbit.oak.plugins.blob.datastore.BlobIdTracker$BlobIdStore.snapshot(BlobIdTracker.java:530)
at
org.apache.jackrabbit.oak.plugins.blob.datastore.BlobIdTrackerStoreTest$4.run(BlobIdTrackerStoreTest.java:379)
{{noformat}}
So there appears to be a timing problem with respect to manipulating the
generations list.
was (Author: reschke):
Exception in thread "SnapshotThread" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at
org.apache.jackrabbit.oak.commons.FileIOUtils.append(FileIOUtils.java:156)
at
org.apache.jackrabbit.oak.plugins.blob.datastore.BlobIdTracker$BlobIdStore.merge(BlobIdTracker.java:410)
at
org.apache.jackrabbit.oak.plugins.blob.datastore.BlobIdTracker$BlobIdStore.snapshot(BlobIdTracker.java:530)
at
org.apache.jackrabbit.oak.plugins.blob.datastore.BlobIdTrackerStoreTest$4.run(BlobIdTrackerStoreTest.java:379)
> [BlobGC] BlobIdTracker remove() should merge generations
> --------------------------------------------------------
>
> Key: OAK-5461
> URL: https://issues.apache.org/jira/browse/OAK-5461
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: blob
> Reporter: Amit Jain
> Assignee: Amit Jain
> Fix For: 1.5.18, 1.6
>
>
> On a new setup if the blob gc is executed before taking a snapshot then the
> blobs ids are retrieved from the datastore and GC removes are synchronized
> with this retrieved file. But these removed blob ids may also be present in
> the tracker generation and therefore may get resurrected on next snapshot.
> This will happen as no snapshot has taken place which is possible if the
> {{blobGcMaxAgeInSecs}} is configured to be less than the
> {{blobTrackSnapshotIntervalInSecs}}.
> The effect of the above situation would be that the removed blob ids would
> always turn up as GC candidates until the tracker is reset and log a warning
> during GC as they are not present anymore.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)