[
https://issues.apache.org/jira/browse/LUCENE-7700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15894216#comment-15894216
]
Michael McCandless commented on LUCENE-7700:
--------------------------------------------
Nice job fixing a few ancient typos :)
Looks like javadocs for the private {{MergeRateLimiter.maybePause}} method are
stale?
Why are we creating {{MergeRateLimiter}} on init of MergeThread and then again
in {{CMS.wrapForMerge}}? Seems like we could cast the current thread to
{{MergeThread}} and get its already-created instance?
Why not {{updateIOThrottle}} in the main CMS thread, not the merge thread?
Else, I think we have an added delay, from when a backlog'd merge shows up, to
when the already running merge threads kick up their IO throttle?
Maybe add a comment to {{OneMergeProgress.owner}} and {{.setMergeThread}} that
it's only used for catching misuse?
Can we rename {{OneMergeProgress.pauseTimes}} -> {{pauseTimesNanos}} or NS?
You can just remove the //private final Directory mergeDirectory from IW.
Hmm it looks like CFS building is still unthrottled?
> Move throughput control and merge aborting out of IndexWriter's core?
> ---------------------------------------------------------------------
>
> Key: LUCENE-7700
> URL: https://issues.apache.org/jira/browse/LUCENE-7700
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Dawid Weiss
> Assignee: Dawid Weiss
> Priority: Minor
> Attachments: LUCENE-7700.patch, LUCENE-7700.patch
>
>
> Here is a bit of a background:
> - I wanted to implement a custom merging strategy that would have a custom
> i/o flow control (global),
> - currently, the CMS is tightly bound with a few classes -- MergeRateLimiter,
> OneMerge, IndexWriter.
> Looking at the code it seems to me that everything with respect to I/O
> control could be nicely pulled out into classes that explicitly control the
> merging process, that is only MergePolicy and MergeScheduler. By default, one
> could even run without any additional I/O accounting overhead (which is
> currently in there, even if one doesn't use the CMS's throughput control).
> Such refactoring would also give a chance to nicely move things where they
> belong -- job aborting into OneMerge (currently in RateLimiter), rate limiter
> lifecycle bound to OneMerge (MergeScheduler could then use per-merge or
> global accounting, as it pleases).
> Just a thought and some initial refactorings for discussion.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]