[
https://issues.apache.org/jira/browse/OAK-2752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14493882#comment-14493882
]
Michael Dürig commented on OAK-2752:
------------------------------------
The problem I see with the patch is that when it breaks out of the loop {{index
== first}} and {{references.get(index) != null}} thus the subsequent
{{references.set(index,...)}} will overwrite and existing entry.
Maybe Thomas' suggestion of resizing when the table's fill ratio reaches a
certain threshold would kill two birds with one stone here.
> SegmentIdTable can sometimes hang when calling getSegmentId(msb, lsb)
> ---------------------------------------------------------------------
>
> Key: OAK-2752
> URL: https://issues.apache.org/jira/browse/OAK-2752
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: oak-core
> Affects Versions: 1.2
> Reporter: Will McGauley
> Assignee: Alex Parvulescu
> Priority: Critical
> Fix For: 1.0.13, 1.2.1
>
> Attachments: OAK-2752-v2.patch, OAK-2752.patch
>
>
> The while loop getSegmentId(msb, lsb) loops forever in the situation where
> the segment id is not found.
> Looping occurs from 'first' and loops to the end of the SegmentId references,
> and then loops back to first. If the segmentid is not found in any of the
> referenced items then looping continues past 'first' again and loops for
> eternity through all the references.
> See attached patch for possible fix to break out of the loop after getting
> back to 'first' again.
> note: I have tested this patch on my system and it seems to work, but I do
> not know if the patch provides the best fix, I am a bit new to this code.
> The most important part of the patch would be the break condition from the
> loop so the loop does not continue after testing each reference
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)