From 59f2a4bd55cee5bc10d1014f2b7c13590abefea3 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Mon, 17 Jul 2023 15:14:29 -0500 Subject: [PATCH 1/8] IX Plugin WIP --- plugins/metering-ix/build.gradle | 13 +++ .../plugin/meter/ix/MeterIXPlugin.java | 51 ++++++++++ .../plugin/meter/ix/MeterIXPoller.java | 94 +++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 plugins/metering-ix/build.gradle create mode 100644 plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPlugin.java create mode 100644 plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPoller.java diff --git a/plugins/metering-ix/build.gradle b/plugins/metering-ix/build.gradle new file mode 100644 index 0000000000000..724bbdc0760ba --- /dev/null +++ b/plugins/metering-ix/build.gradle @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +esplugin { + name 'metering-ix' + description 'Metering IX' + classname 'org.elasticsearch.plugin.meter.ix.MeterIXPlugin' +} diff --git a/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPlugin.java b/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPlugin.java new file mode 100644 index 0000000000000..fac239f127a69 --- /dev/null +++ b/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPlugin.java @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.plugin.meter.ix; + +import org.elasticsearch.client.internal.Client; +import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; +import org.elasticsearch.cluster.routing.allocation.AllocationService; +import org.elasticsearch.cluster.service.ClusterService; +import org.elasticsearch.common.io.stream.NamedWriteableRegistry; +import org.elasticsearch.env.Environment; +import org.elasticsearch.env.NodeEnvironment; +import org.elasticsearch.indices.IndicesService; +import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.repositories.RepositoriesService; +import org.elasticsearch.script.ScriptService; +import org.elasticsearch.threadpool.ThreadPool; +import org.elasticsearch.tracing.Tracer; +import org.elasticsearch.watcher.ResourceWatcherService; +import org.elasticsearch.xcontent.NamedXContentRegistry; + +import java.util.Collection; +import java.util.List; +import java.util.function.Supplier; + +public class MeterIXPlugin extends Plugin { + @Override + public Collection createComponents( + Client client, + ClusterService clusterService, + ThreadPool threadPool, + ResourceWatcherService resourceWatcherService, + ScriptService scriptService, + NamedXContentRegistry xContentRegistry, + Environment environment, + NodeEnvironment nodeEnvironment, + NamedWriteableRegistry namedWriteableRegistry, + IndexNameExpressionResolver indexNameExpressionResolver, + Supplier repositoriesServiceSupplier, + Tracer tracer, + AllocationService allocationService, + IndicesService indicesService + ) { + return List.of(new MeterIXPoller(threadPool, indicesService)); + } +} diff --git a/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPoller.java b/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPoller.java new file mode 100644 index 0000000000000..55a81c5b91eda --- /dev/null +++ b/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPoller.java @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.plugin.meter.ix; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.elasticsearch.common.component.Lifecycle; +import org.elasticsearch.common.component.LifecycleComponent; +import org.elasticsearch.common.component.LifecycleListener; +import org.elasticsearch.core.TimeValue; +import org.elasticsearch.indices.IndicesService; +import org.elasticsearch.threadpool.Scheduler; +import org.elasticsearch.threadpool.ThreadPool; + +import java.util.concurrent.locks.ReentrantLock; + +public class MeterIXPoller implements LifecycleComponent { + private static final Logger logger = LogManager.getLogger(MeterIXPoller.class); + final ThreadPool threadPool; + final IndicesService indexServices; + Lifecycle.State state = Lifecycle.State.INITIALIZED; + Scheduler.ScheduledCancellable next = null; + private final ReentrantLock mutex = new ReentrantLock(); + + public MeterIXPoller(ThreadPool threadPool, IndicesService indexServices) { + this.threadPool = threadPool; + this.indexServices = indexServices; + } + + @Override + public void close() { + mutex.lock(); + try { + if (state != Lifecycle.State.STOPPED && state != Lifecycle.State.CLOSED) { + state = Lifecycle.State.CLOSED; + if (next != null) { + next.cancel(); + } + next = null; + } + } finally { + mutex.unlock(); + } + } + + @Override + public Lifecycle.State lifecycleState() { + return null; + } + + @Override + public void addLifecycleListener(LifecycleListener listener) { + + } + + @Override + public void start() { + mutex.lock(); + try { + if (state == Lifecycle.State.INITIALIZED) { + next = threadPool.schedule(this::logIndexStats, TimeValue.timeValueSeconds(20), ThreadPool.Names.GENERIC); + state = Lifecycle.State.STARTED; + } + } finally { + mutex.unlock(); + } + } + + @Override + public void stop() { + mutex.lock(); + try { + if (state != Lifecycle.State.STOPPED && state != Lifecycle.State.CLOSED) { + state = Lifecycle.State.STOPPED; + if (next != null) { + next.cancel(); + } + next = null; + } + } finally { + mutex.unlock(); + } + } + + public void logIndexStats() { + logger.warn("[STU] running logIndexStats"); + } +} From a4c8a61e6f4f62626ba1fe99e0752d0e2b11e8a0 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Mon, 17 Jul 2023 15:43:04 -0500 Subject: [PATCH 2/8] Move to x-pack so the plugin loads --- {plugins => x-pack/plugin}/metering-ix/build.gradle | 13 ++++++++++++- .../xpack}/meter/ix/MeterIXPlugin.java | 2 +- .../xpack}/meter/ix/MeterIXPoller.java | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) rename {plugins => x-pack/plugin}/metering-ix/build.gradle (58%) rename {plugins/metering-ix/src/main/java/org/elasticsearch/plugin => x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack}/meter/ix/MeterIXPlugin.java (97%) rename {plugins/metering-ix/src/main/java/org/elasticsearch/plugin => x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack}/meter/ix/MeterIXPoller.java (98%) diff --git a/plugins/metering-ix/build.gradle b/x-pack/plugin/metering-ix/build.gradle similarity index 58% rename from plugins/metering-ix/build.gradle rename to x-pack/plugin/metering-ix/build.gradle index 724bbdc0760ba..6590cf736c8f0 100644 --- a/plugins/metering-ix/build.gradle +++ b/x-pack/plugin/metering-ix/build.gradle @@ -5,9 +5,20 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ +apply plugin: 'elasticsearch.internal-es-plugin' esplugin { name 'metering-ix' description 'Metering IX' - classname 'org.elasticsearch.plugin.meter.ix.MeterIXPlugin' + classname 'org.elasticsearch.xpack.meter.ix.MeterIXPlugin' + extendedPlugins = ['x-pack-core'] +} + +base { + archivesName = 'x-pack-monitoring' +} + +dependencies { + compileOnly project(":server") + compileOnly project(path: xpackModule('core')) } diff --git a/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPlugin.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPlugin.java similarity index 97% rename from plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPlugin.java rename to x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPlugin.java index fac239f127a69..6593de159b43e 100644 --- a/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPlugin.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPlugin.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.plugin.meter.ix; +package org.elasticsearch.xpack.meter.ix; import org.elasticsearch.client.internal.Client; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; diff --git a/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPoller.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java similarity index 98% rename from plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPoller.java rename to x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java index 55a81c5b91eda..14d8bb20ac312 100644 --- a/plugins/metering-ix/src/main/java/org/elasticsearch/plugin/meter/ix/MeterIXPoller.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.plugin.meter.ix; +package org.elasticsearch.xpack.meter.ix; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; From b0a9245cb3b7d6ce9b085eb0167fde63adad19e9 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Mon, 17 Jul 2023 16:21:12 -0500 Subject: [PATCH 3/8] Schedule and grab stats --- .../xpack/meter/ix/MeterIXPoller.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java index 14d8bb20ac312..a068559c57af4 100644 --- a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java @@ -10,11 +10,14 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags; import org.elasticsearch.common.component.Lifecycle; import org.elasticsearch.common.component.LifecycleComponent; import org.elasticsearch.common.component.LifecycleListener; import org.elasticsearch.core.TimeValue; +import org.elasticsearch.index.engine.SegmentsStats; import org.elasticsearch.indices.IndicesService; +import org.elasticsearch.indices.NodeIndicesStats; import org.elasticsearch.threadpool.Scheduler; import org.elasticsearch.threadpool.ThreadPool; @@ -64,8 +67,8 @@ public void start() { mutex.lock(); try { if (state == Lifecycle.State.INITIALIZED) { - next = threadPool.schedule(this::logIndexStats, TimeValue.timeValueSeconds(20), ThreadPool.Names.GENERIC); state = Lifecycle.State.STARTED; + setScheduleNext(); } } finally { mutex.unlock(); @@ -88,7 +91,26 @@ public void stop() { } } + private void setScheduleNext() { + next = threadPool.schedule(this::logAndSchedule, TimeValue.timeValueSeconds(20), ThreadPool.Names.GENERIC); + } + + public void logAndSchedule() { + logIndexStats(); + mutex.lock(); + try { + if (state == Lifecycle.State.STARTED) { + setScheduleNext(); + } + } finally { + mutex.unlock(); + } + } + public void logIndexStats() { logger.warn("[STU] running logIndexStats"); + NodeIndicesStats stats = indexServices.stats(new CommonStatsFlags(CommonStatsFlags.Flag.Segments)); + SegmentsStats segmentsStats = stats.getSegments(); + logger.warn("[STU] done running logIndexStats"); } } From a0d319bcb94f1d1c8b82e32bfce7b6230ecd5fb3 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Mon, 17 Jul 2023 17:03:44 -0500 Subject: [PATCH 4/8] Checkpoint --- .../xpack/meter/ix/MeterIXPoller.java | 54 ++++++++++++++++--- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java index a068559c57af4..38325a01fbefa 100644 --- a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java @@ -15,7 +15,11 @@ import org.elasticsearch.common.component.LifecycleComponent; import org.elasticsearch.common.component.LifecycleListener; import org.elasticsearch.core.TimeValue; +import org.elasticsearch.index.IndexService; +import org.elasticsearch.index.engine.Engine; +import org.elasticsearch.index.engine.Segment; import org.elasticsearch.index.engine.SegmentsStats; +import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.indices.IndicesService; import org.elasticsearch.indices.NodeIndicesStats; import org.elasticsearch.threadpool.Scheduler; @@ -26,14 +30,14 @@ public class MeterIXPoller implements LifecycleComponent { private static final Logger logger = LogManager.getLogger(MeterIXPoller.class); final ThreadPool threadPool; - final IndicesService indexServices; + final IndicesService indicesService; Lifecycle.State state = Lifecycle.State.INITIALIZED; Scheduler.ScheduledCancellable next = null; private final ReentrantLock mutex = new ReentrantLock(); - public MeterIXPoller(ThreadPool threadPool, IndicesService indexServices) { + public MeterIXPoller(ThreadPool threadPool, IndicesService indicesService) { this.threadPool = threadPool; - this.indexServices = indexServices; + this.indicesService = indicesService; } @Override @@ -108,9 +112,47 @@ public void logAndSchedule() { } public void logIndexStats() { - logger.warn("[STU] running logIndexStats"); - NodeIndicesStats stats = indexServices.stats(new CommonStatsFlags(CommonStatsFlags.Flag.Segments)); + logger.warn("[STU] logIndexStats"); + logFromShard(); + logFromStats(); + logger.warn("[STU] done logIndexStats"); + } + + public void logFromShard() { + logger.info("[STU] logFromShard"); + for (final IndexService indexService : indicesService) { + for (final IndexShard shard : indexService) { + //SegmentsStats segmentsStats = engine.segmentsStats(true, false); + for (final Segment segment: shard.segments()) { + logger.info("{}:{} -> {}", shard.shardId(), segment.getName(), segment.getSize().getBytes()); + } + } + } + logger.info("[STU] done logFromShard"); + } + + public void logFromEngine() { + logger.info("[STU] logFromEngine"); + for (final IndexService indexService : indicesService) { + for (final IndexShard shard : indexService) { + Engine engine = shard.getEngineOrNull(); + if (engine == null) { + continue; + } + engine.getLastCommittedSegmentInfos(); + //SegmentsStats segmentsStats = engine.segmentsStats(true, false); + for (final Segment segment: shard.segments()) { + logger.info("{}:{} -> {}", shard.shardId(), segment.getName(), segment.getSize().getBytes()); + } + } + } + logger.info("[STU] done logFromEngine"); + } + + public void logFromStats() { + NodeIndicesStats stats = indicesService.stats(new CommonStatsFlags(CommonStatsFlags.Flag.Segments).includeSegmentFileSizes(true)); SegmentsStats segmentsStats = stats.getSegments(); - logger.warn("[STU] done running logIndexStats"); + var files = segmentsStats.getFiles(); + logger.info("files {}", files); } } From fa8a4df5ee2efa69ea7e0b80916e285bba8e8b15 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Thu, 20 Jul 2023 17:01:34 -0500 Subject: [PATCH 5/8] Basic IX polling via engine --- .../elasticsearch/index/engine/Engine.java | 2 +- .../index/engine/InternalEngine.java | 2 +- .../index/engine/ReadOnlyEngine.java | 2 +- .../xpack/meter/ix/MeterIXPoller.java | 57 +++++++++---------- 4 files changed, 30 insertions(+), 33 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/index/engine/Engine.java b/server/src/main/java/org/elasticsearch/index/engine/Engine.java index e3f831f958e0e..953c77e2826f4 100644 --- a/server/src/main/java/org/elasticsearch/index/engine/Engine.java +++ b/server/src/main/java/org/elasticsearch/index/engine/Engine.java @@ -146,7 +146,7 @@ public final EngineConfig config() { return engineConfig; } - protected abstract SegmentInfos getLastCommittedSegmentInfos(); + public abstract SegmentInfos getLastCommittedSegmentInfos(); public MergeStats getMergeStats() { return new MergeStats(); diff --git a/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java b/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java index a17441b1f37b2..684214b2692b5 100644 --- a/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java +++ b/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java @@ -2478,7 +2478,7 @@ protected boolean maybeFailEngine(String source, Exception e) { } @Override - protected SegmentInfos getLastCommittedSegmentInfos() { + public SegmentInfos getLastCommittedSegmentInfos() { return lastCommittedSegmentInfos; } diff --git a/server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java b/server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java index d428bdbfb13db..b38cc24e107ea 100644 --- a/server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java +++ b/server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java @@ -287,7 +287,7 @@ protected ReferenceManager getReferenceManager(Sea } @Override - protected SegmentInfos getLastCommittedSegmentInfos() { + public SegmentInfos getLastCommittedSegmentInfos() { return lastCommittedSegmentInfos; } diff --git a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java index 38325a01fbefa..e6757155c92bf 100644 --- a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java @@ -10,12 +10,18 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.lucene.index.SegmentCommitInfo; +import org.apache.lucene.index.SegmentInfos; +import org.apache.lucene.util.StringHelper; import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags; +import org.elasticsearch.action.admin.indices.stats.IndexShardStats; import org.elasticsearch.common.component.Lifecycle; import org.elasticsearch.common.component.LifecycleComponent; import org.elasticsearch.common.component.LifecycleListener; import org.elasticsearch.core.TimeValue; +import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexService; +import org.elasticsearch.index.engine.CommitStats; import org.elasticsearch.index.engine.Engine; import org.elasticsearch.index.engine.Segment; import org.elasticsearch.index.engine.SegmentsStats; @@ -25,6 +31,9 @@ import org.elasticsearch.threadpool.Scheduler; import org.elasticsearch.threadpool.ThreadPool; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.locks.ReentrantLock; public class MeterIXPoller implements LifecycleComponent { @@ -112,47 +121,35 @@ public void logAndSchedule() { } public void logIndexStats() { - logger.warn("[STU] logIndexStats"); - logFromShard(); - logFromStats(); - logger.warn("[STU] done logIndexStats"); + logger.warn("[IX] logIndexStats"); + collectRecords(); + logger.warn("[IX] done logIndexStats"); } - public void logFromShard() { - logger.info("[STU] logFromShard"); - for (final IndexService indexService : indicesService) { - for (final IndexShard shard : indexService) { - //SegmentsStats segmentsStats = engine.segmentsStats(true, false); - for (final Segment segment: shard.segments()) { - logger.info("{}:{} -> {}", shard.shardId(), segment.getName(), segment.getSize().getBytes()); - } - } - } - logger.info("[STU] done logFromShard"); - } - - public void logFromEngine() { - logger.info("[STU] logFromEngine"); + public List collectRecords() { + List records = new ArrayList<>(); for (final IndexService indexService : indicesService) { + String index = indexService.index().getName(); for (final IndexShard shard : indexService) { Engine engine = shard.getEngineOrNull(); if (engine == null) { continue; } - engine.getLastCommittedSegmentInfos(); - //SegmentsStats segmentsStats = engine.segmentsStats(true, false); - for (final Segment segment: shard.segments()) { - logger.info("{}:{} -> {}", shard.shardId(), segment.getName(), segment.getSize().getBytes()); + long term = shard.getOperationPrimaryTerm(); + int shardId = shard.shardId().id(); + for (final SegmentCommitInfo commitInfo : engine.getLastCommittedSegmentInfos()) { + try { + var record = new IXRecord(index, shardId, term, commitInfo.getDocValuesGen(), StringHelper.idToString(commitInfo.getId()), commitInfo.sizeInBytes()); + records.add(record); + logger.info(record); + } catch (IOException err) { + logger.warn("error: [{}], index: [{}], shard: [{}], id: [{}]", err, index, shardId, commitInfo.getId()); + } } } } - logger.info("[STU] done logFromEngine"); + return records; } - public void logFromStats() { - NodeIndicesStats stats = indicesService.stats(new CommonStatsFlags(CommonStatsFlags.Flag.Segments).includeSegmentFileSizes(true)); - SegmentsStats segmentsStats = stats.getSegments(); - var files = segmentsStats.getFiles(); - logger.info("files {}", files); - } + private record IXRecord(String index, int shardId, long term, long generation, String commitId, long size) {} } From 589fd599a0d3b725d20e047d893d4e7a5ab18ce4 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Thu, 20 Jul 2023 17:02:51 -0500 Subject: [PATCH 6/8] spotless --- .../xpack/meter/ix/MeterIXPoller.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java index e6757155c92bf..692a8749a4ebb 100644 --- a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java @@ -11,23 +11,15 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.lucene.index.SegmentCommitInfo; -import org.apache.lucene.index.SegmentInfos; import org.apache.lucene.util.StringHelper; -import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags; -import org.elasticsearch.action.admin.indices.stats.IndexShardStats; import org.elasticsearch.common.component.Lifecycle; import org.elasticsearch.common.component.LifecycleComponent; import org.elasticsearch.common.component.LifecycleListener; import org.elasticsearch.core.TimeValue; -import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexService; -import org.elasticsearch.index.engine.CommitStats; import org.elasticsearch.index.engine.Engine; -import org.elasticsearch.index.engine.Segment; -import org.elasticsearch.index.engine.SegmentsStats; import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.indices.IndicesService; -import org.elasticsearch.indices.NodeIndicesStats; import org.elasticsearch.threadpool.Scheduler; import org.elasticsearch.threadpool.ThreadPool; @@ -139,7 +131,14 @@ public List collectRecords() { int shardId = shard.shardId().id(); for (final SegmentCommitInfo commitInfo : engine.getLastCommittedSegmentInfos()) { try { - var record = new IXRecord(index, shardId, term, commitInfo.getDocValuesGen(), StringHelper.idToString(commitInfo.getId()), commitInfo.sizeInBytes()); + var record = new IXRecord( + index, + shardId, + term, + commitInfo.getDocValuesGen(), + StringHelper.idToString(commitInfo.getId()), + commitInfo.sizeInBytes() + ); records.add(record); logger.info(record); } catch (IOException err) { From f50ebeee3c01c6195f25ca5bde6871bd9d3ebaea Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Thu, 20 Jul 2023 17:13:09 -0500 Subject: [PATCH 7/8] license headers --- .../java/org/elasticsearch/xpack/meter/ix/MeterIXPlugin.java | 5 ++--- .../java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPlugin.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPlugin.java index 6593de159b43e..dbac7df3be0e1 100644 --- a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPlugin.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPlugin.java @@ -1,9 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ package org.elasticsearch.xpack.meter.ix; diff --git a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java index 692a8749a4ebb..7088fafed2d92 100644 --- a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java @@ -1,9 +1,8 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ package org.elasticsearch.xpack.meter.ix; From 9fdcbd54ac9639441dcd541f55c23eea5d53b649 Mon Sep 17 00:00:00 2001 From: Stuart Tettemer Date: Thu, 20 Jul 2023 17:22:07 -0500 Subject: [PATCH 8/8] logger --- .../java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java index 7088fafed2d92..031ba12d6d2c6 100644 --- a/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java +++ b/x-pack/plugin/metering-ix/src/main/java/org/elasticsearch/xpack/meter/ix/MeterIXPoller.java @@ -139,7 +139,7 @@ var record = new IXRecord( commitInfo.sizeInBytes() ); records.add(record); - logger.info(record); + logger.info("{}", record); } catch (IOException err) { logger.warn("error: [{}], index: [{}], shard: [{}], id: [{}]", err, index, shardId, commitInfo.getId()); }