You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Dawid Weiss (JIRA)" <ji...@apache.org> on 2017/02/21 11:24:44 UTC
[jira] [Updated] (LUCENE-7700) Move throughput control and merge
aborting out of IndexWriter's core?
[ https://issues.apache.org/jira/browse/LUCENE-7700?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dawid Weiss updated LUCENE-7700:
--------------------------------
Description:
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.
> 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
>
> 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: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org