You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Michael Dürig (JIRA)" <ji...@apache.org> on 2015/11/27 14:57:10 UTC
[jira] [Commented] (OAK-3690) Decouple SegmentBufferWriter from
SegmentStore
[ https://issues.apache.org/jira/browse/OAK-3690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15029894#comment-15029894 ]
Michael Dürig commented on OAK-3690:
------------------------------------
One way of decoupling would be to hand a 'queue' to the {{SegmentBufferWriter}} instead of the {{SegmentStore}}. In a first step that 'queue' would be directly backed by the {{SegmentStore}}, thus apart from the abstraction noting changes. In a next step that 'queue' could be replaced by a real producer/consumer queue pushing segments from the {{SegmentBufferWritter}} to the {{SegmentStore}} on a background thread (e.g. the flush thread).
> Decouple SegmentBufferWriter from SegmentStore
> ----------------------------------------------
>
> Key: OAK-3690
> URL: https://issues.apache.org/jira/browse/OAK-3690
> Project: Jackrabbit Oak
> Issue Type: Technical task
> Components: segmentmk
> Reporter: Michael Dürig
> Labels: technical_debt
> Fix For: 1.4
>
>
> Currently {{SegmentBufferWriter.flush()}} directly calls {{SegmentStore.writeSegment()}} once the current segment does not have enough space for the next record. We should try to cut this dependency as {{SegmentBufferWriter}} should only be concerned with providing buffers for segments. Actually writing these to the store should be handled by a higher level component.
> A number of deadlock (e.g. (OAK-2560, OAK-3179, OAK-3264) we have seen is one manifestation of this troublesome dependency.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)