Skip to content

Commit ea8a35b

Browse files
committed
Add Builder in FieldDataStats and refactor usage
Signed-off-by: Jean Kim <bgshhd95@gmail.com>
1 parent 022d594 commit ea8a35b

File tree

6 files changed

+71
-9
lines changed

6 files changed

+71
-9
lines changed

server/src/main/java/org/opensearch/index/fielddata/FieldDataStats.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,28 @@ public FieldDataStats() {
6767

6868
}
6969

70+
/**
71+
* Private constructor that takes a builder.
72+
* This is the sole entry point for creating a new FieldDataStats object.
73+
* @param builder The builder instance containing all the values.
74+
*/
75+
private FieldDataStats(Builder builder) {
76+
this.memorySize = builder.memorySize;
77+
this.evictions = builder.evictions;
78+
this.fields = builder.fields;
79+
}
80+
7081
public FieldDataStats(StreamInput in) throws IOException {
7182
memorySize = in.readVLong();
7283
evictions = in.readVLong();
7384
fields = in.readOptionalWriteable(FieldMemoryStats::new);
7485
}
7586

87+
/**
88+
* This constructor will be deprecated starting in version 3.4.0.
89+
* Use {@link FieldDataStats.Builder} instead.
90+
*/
91+
@Deprecated
7692
public FieldDataStats(long memorySize, long evictions, @Nullable FieldMemoryStats fields) {
7793
this.memorySize = memorySize;
7894
this.evictions = evictions;
@@ -111,6 +127,41 @@ public FieldMemoryStats getFields() {
111127
return fields;
112128
}
113129

130+
/**
131+
* Builder for the {@link FieldDataStats} class.
132+
* Provides a fluent API for constructing a FieldDataStats object.
133+
*/
134+
public static class Builder {
135+
private long memorySize = 0;
136+
private long evictions = 0;
137+
private FieldMemoryStats fields = null;
138+
139+
public Builder() {}
140+
141+
public Builder memorySize(long memorySize) {
142+
this.memorySize = memorySize;
143+
return this;
144+
}
145+
146+
public Builder evictions(long evictions) {
147+
this.evictions = evictions;
148+
return this;
149+
}
150+
151+
public Builder fields(@Nullable FieldMemoryStats fields) {
152+
this.fields = fields;
153+
return this;
154+
}
155+
156+
/**
157+
* Creates a {@link FieldDataStats} object from the builder's current state.
158+
* @return A new FieldDataStats instance.
159+
*/
160+
public FieldDataStats build() {
161+
return new FieldDataStats(this);
162+
}
163+
}
164+
114165
@Override
115166
public void writeTo(StreamOutput out) throws IOException {
116167
out.writeVLong(memorySize);

server/src/main/java/org/opensearch/index/fielddata/ShardFieldData.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,10 @@ public FieldDataStats stats(String... fields) {
6767
}
6868
}
6969
}
70-
return new FieldDataStats(
71-
totalMetric.count(),
72-
evictionsMetric.count(),
73-
fieldTotals == null ? null : new FieldMemoryStats(fieldTotals)
74-
);
70+
return new FieldDataStats.Builder().memorySize(totalMetric.count())
71+
.evictions(evictionsMetric.count())
72+
.fields(fieldTotals == null ? null : new FieldMemoryStats(fieldTotals))
73+
.build();
7574
}
7675

7776
@Override

server/src/test/java/org/opensearch/action/admin/cluster/node/stats/NodeStatsTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1373,7 +1373,10 @@ private CommonStats createRandomCommonStats() {
13731373
commonStats.indexing = new IndexingStats();
13741374
commonStats.completion = new CompletionStats();
13751375
commonStats.flush = new FlushStats(randomLongBetween(0, 100), randomLongBetween(0, 100), randomLongBetween(0, 100));
1376-
commonStats.fieldData = new FieldDataStats(randomLongBetween(0, 100), randomLongBetween(0, 100), null);
1376+
commonStats.fieldData = new FieldDataStats.Builder().memorySize(randomLongBetween(0, 100))
1377+
.evictions(randomLongBetween(0, 100))
1378+
.fields(null)
1379+
.build();
13771380
commonStats.queryCache = new QueryCacheStats(
13781381
randomLongBetween(0, 100),
13791382
randomLongBetween(0, 100),

server/src/test/java/org/opensearch/action/admin/cluster/stats/ClusterStatsNodesTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,10 @@ private CommonStats createRandomCommonStats() {
372372
commonStats.indexing = new IndexingStats();
373373
commonStats.completion = new CompletionStats();
374374
commonStats.flush = new FlushStats(randomLongBetween(0, 100), randomLongBetween(0, 100), randomLongBetween(0, 100));
375-
commonStats.fieldData = new FieldDataStats(randomLongBetween(0, 100), randomLongBetween(0, 100), null);
375+
commonStats.fieldData = new FieldDataStats.Builder().memorySize(randomLongBetween(0, 100))
376+
.evictions(randomLongBetween(0, 100))
377+
.fields(null)
378+
.build();
376379
commonStats.queryCache = new QueryCacheStats(
377380
randomLongBetween(0, 100),
378381
randomLongBetween(0, 100),

server/src/test/java/org/opensearch/action/admin/cluster/stats/ClusterStatsResponseTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,10 @@ private CommonStats createRandomCommonStats() {
240240
commonStats.indexing = new IndexingStats();
241241
commonStats.completion = new CompletionStats();
242242
commonStats.flush = new FlushStats(randomLongBetween(0, 100), randomLongBetween(0, 100), randomLongBetween(0, 100));
243-
commonStats.fieldData = new FieldDataStats(randomLongBetween(0, 100), randomLongBetween(0, 100), null);
243+
commonStats.fieldData = new FieldDataStats.Builder().memorySize(randomLongBetween(0, 100))
244+
.evictions(randomLongBetween(0, 100))
245+
.fields(null)
246+
.build();
244247
commonStats.queryCache = new QueryCacheStats(
245248
randomLongBetween(0, 100),
246249
randomLongBetween(0, 100),

server/src/test/java/org/opensearch/index/fielddata/FieldDataStatsTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ public class FieldDataStatsTests extends OpenSearchTestCase {
4343

4444
public void testSerialize() throws IOException {
4545
FieldMemoryStats map = randomBoolean() ? null : FieldMemoryStatsTests.randomFieldMemoryStats();
46-
FieldDataStats stats = new FieldDataStats(randomNonNegativeLong(), randomNonNegativeLong(), map);
46+
FieldDataStats stats = new FieldDataStats.Builder().memorySize(randomNonNegativeLong())
47+
.evictions(randomNonNegativeLong())
48+
.fields(map)
49+
.build();
4750
BytesStreamOutput out = new BytesStreamOutput();
4851
stats.writeTo(out);
4952
StreamInput input = out.bytes().streamInput();

0 commit comments

Comments
 (0)