@Override public LogByteSizeMergePolicy newMergePolicy() { CustomLogByteSizeMergePolicy mergePolicy; if (asyncMerge) { mergePolicy = new EnableMergeLogByteSizeMergePolicy(this); } else { mergePolicy = new CustomLogByteSizeMergePolicy(this); } mergePolicy.setMinMergeMB(minMergeSize.mbFrac()); mergePolicy.setMaxMergeMB(maxMergeSize.mbFrac()); mergePolicy.setMergeFactor(mergeFactor); mergePolicy.setMaxMergeDocs(maxMergeDocs); mergePolicy.setCalibrateSizeByDeletes(calibrateSizeByDeletes); mergePolicy.setUseCompoundFile(compoundFormat); policies.add(mergePolicy); return mergePolicy; }
@Override public void close() { enableMerge.remove(); super.close(); }
@Override public void onRefreshSettings(Settings settings) { ByteSizeValue minMergeSize = settings.getAsBytesSize( "index.merge.policy.min_merge_size", LogByteSizeMergePolicyProvider.this.minMergeSize); if (!minMergeSize.equals(LogByteSizeMergePolicyProvider.this.minMergeSize)) { logger.info( "updating min_merge_size from [{}] to [{}]", LogByteSizeMergePolicyProvider.this.minMergeSize, minMergeSize); LogByteSizeMergePolicyProvider.this.minMergeSize = minMergeSize; for (CustomLogByteSizeMergePolicy policy : policies) { policy.setMinMergeMB(minMergeSize.mbFrac()); } } ByteSizeValue maxMergeSize = settings.getAsBytesSize( "index.merge.policy.max_merge_size", LogByteSizeMergePolicyProvider.this.maxMergeSize); if (!maxMergeSize.equals(LogByteSizeMergePolicyProvider.this.maxMergeSize)) { logger.info( "updating max_merge_size from [{}] to [{}]", LogByteSizeMergePolicyProvider.this.maxMergeSize, maxMergeSize); LogByteSizeMergePolicyProvider.this.maxMergeSize = maxMergeSize; for (CustomLogByteSizeMergePolicy policy : policies) { policy.setMaxMergeMB(maxMergeSize.mbFrac()); } } int maxMergeDocs = settings.getAsInt( "index.merge.policy.max_merge_docs", LogByteSizeMergePolicyProvider.this.maxMergeDocs); if (maxMergeDocs != LogByteSizeMergePolicyProvider.this.maxMergeDocs) { logger.info( "updating max_merge_docs from [{}] to [{}]", LogByteSizeMergePolicyProvider.this.maxMergeDocs, maxMergeDocs); LogByteSizeMergePolicyProvider.this.maxMergeDocs = maxMergeDocs; for (CustomLogByteSizeMergePolicy policy : policies) { policy.setMaxMergeDocs(maxMergeDocs); } } int mergeFactor = settings.getAsInt( "index.merge.policy.merge_factor", LogByteSizeMergePolicyProvider.this.mergeFactor); if (mergeFactor != LogByteSizeMergePolicyProvider.this.mergeFactor) { logger.info( "updating merge_factor from [{}] to [{}]", LogByteSizeMergePolicyProvider.this.mergeFactor, mergeFactor); LogByteSizeMergePolicyProvider.this.mergeFactor = mergeFactor; for (CustomLogByteSizeMergePolicy policy : policies) { policy.setMergeFactor(mergeFactor); } } boolean compoundFormat = settings.getAsBoolean( "index.compound_format", LogByteSizeMergePolicyProvider.this.compoundFormat); if (compoundFormat != LogByteSizeMergePolicyProvider.this.compoundFormat) { logger.info( "updating index.compound_format from [{}] to [{}]", LogByteSizeMergePolicyProvider.this.compoundFormat, compoundFormat); LogByteSizeMergePolicyProvider.this.compoundFormat = compoundFormat; for (CustomLogByteSizeMergePolicy policy : policies) { policy.setUseCompoundFile(compoundFormat); } } }