7
7
8
8
package org .elasticsearch .xpack .core .slm ;
9
9
10
+ import org .elasticsearch .Version ;
10
11
import org .elasticsearch .cluster .SimpleDiffable ;
11
12
import org .elasticsearch .common .io .stream .StreamInput ;
12
13
import org .elasticsearch .common .io .stream .StreamOutput ;
@@ -40,6 +41,7 @@ public class SnapshotLifecyclePolicyMetadata implements SimpleDiffable<SnapshotL
40
41
static final ParseField MODIFIED_DATE = new ParseField ("modified_date" );
41
42
static final ParseField LAST_SUCCESS = new ParseField ("last_success" );
42
43
static final ParseField LAST_FAILURE = new ParseField ("last_failure" );
44
+ static final ParseField INVOCATIONS_SINCE_LAST_SUCCESS = new ParseField ("invocations_since_last_success" );
43
45
static final ParseField NEXT_EXECUTION_MILLIS = new ParseField ("next_execution_millis" );
44
46
static final ParseField NEXT_EXECUTION = new ParseField ("next_execution" );
45
47
@@ -51,6 +53,7 @@ public class SnapshotLifecyclePolicyMetadata implements SimpleDiffable<SnapshotL
51
53
private final SnapshotInvocationRecord lastSuccess ;
52
54
@ Nullable
53
55
private final SnapshotInvocationRecord lastFailure ;
56
+ private final long invocationsSinceLastSuccess ;
54
57
55
58
@ SuppressWarnings ("unchecked" )
56
59
public static final ConstructingObjectParser <SnapshotLifecyclePolicyMetadata , String > PARSER = new ConstructingObjectParser <>(
@@ -66,6 +69,7 @@ public class SnapshotLifecyclePolicyMetadata implements SimpleDiffable<SnapshotL
66
69
.setModifiedDate ((long ) a [3 ])
67
70
.setLastSuccess (lastSuccess )
68
71
.setLastFailure (lastFailure )
72
+ .setInvocationsSinceLastSuccess (a [6 ] == null ? 0L : ((long ) a [6 ]))
69
73
.build ();
70
74
}
71
75
);
@@ -77,6 +81,7 @@ public class SnapshotLifecyclePolicyMetadata implements SimpleDiffable<SnapshotL
77
81
PARSER .declareLong (ConstructingObjectParser .constructorArg (), MODIFIED_DATE_MILLIS );
78
82
PARSER .declareObject (ConstructingObjectParser .optionalConstructorArg (), SnapshotInvocationRecord ::parse , LAST_SUCCESS );
79
83
PARSER .declareObject (ConstructingObjectParser .optionalConstructorArg (), SnapshotInvocationRecord ::parse , LAST_FAILURE );
84
+ PARSER .declareLong (ConstructingObjectParser .optionalConstructorArg (), INVOCATIONS_SINCE_LAST_SUCCESS );
80
85
}
81
86
82
87
public static SnapshotLifecyclePolicyMetadata parse (XContentParser parser , String name ) {
@@ -89,7 +94,8 @@ public static SnapshotLifecyclePolicyMetadata parse(XContentParser parser, Strin
89
94
long version ,
90
95
long modifiedDate ,
91
96
SnapshotInvocationRecord lastSuccess ,
92
- SnapshotInvocationRecord lastFailure
97
+ SnapshotInvocationRecord lastFailure ,
98
+ long invocationsSinceLastSuccess
93
99
) {
94
100
this .policy = policy ;
95
101
this .headers = headers ;
@@ -98,6 +104,7 @@ public static SnapshotLifecyclePolicyMetadata parse(XContentParser parser, Strin
98
104
this .modifiedDate = modifiedDate ;
99
105
this .lastSuccess = lastSuccess ;
100
106
this .lastFailure = lastFailure ;
107
+ this .invocationsSinceLastSuccess = invocationsSinceLastSuccess ;
101
108
}
102
109
103
110
@ SuppressWarnings ("unchecked" )
@@ -109,6 +116,7 @@ public static SnapshotLifecyclePolicyMetadata parse(XContentParser parser, Strin
109
116
this .modifiedDate = in .readVLong ();
110
117
this .lastSuccess = in .readOptionalWriteable (SnapshotInvocationRecord ::new );
111
118
this .lastFailure = in .readOptionalWriteable (SnapshotInvocationRecord ::new );
119
+ this .invocationsSinceLastSuccess = in .getVersion ().onOrAfter (Version .V_8_4_0 ) ? in .readVLong () : 0L ;
112
120
}
113
121
114
122
@ Override
@@ -119,6 +127,9 @@ public void writeTo(StreamOutput out) throws IOException {
119
127
out .writeVLong (this .modifiedDate );
120
128
out .writeOptionalWriteable (this .lastSuccess );
121
129
out .writeOptionalWriteable (this .lastFailure );
130
+ if (out .getVersion ().onOrAfter (Version .V_8_4_0 )) {
131
+ out .writeVLong (this .invocationsSinceLastSuccess );
132
+ }
122
133
}
123
134
124
135
public static Builder builder () {
@@ -134,7 +145,8 @@ public static Builder builder(SnapshotLifecyclePolicyMetadata metadata) {
134
145
.setVersion (metadata .getVersion ())
135
146
.setModifiedDate (metadata .getModifiedDate ())
136
147
.setLastSuccess (metadata .getLastSuccess ())
137
- .setLastFailure (metadata .getLastFailure ());
148
+ .setLastFailure (metadata .getLastFailure ())
149
+ .setInvocationsSinceLastSuccess (metadata .getInvocationsSinceLastSuccess ());
138
150
}
139
151
140
152
public Map <String , String > getHeaders () {
@@ -165,6 +177,10 @@ public SnapshotInvocationRecord getLastFailure() {
165
177
return lastFailure ;
166
178
}
167
179
180
+ public long getInvocationsSinceLastSuccess () {
181
+ return invocationsSinceLastSuccess ;
182
+ }
183
+
168
184
@ Override
169
185
public XContentBuilder toXContent (XContentBuilder builder , Params params ) throws IOException {
170
186
builder .startObject ();
@@ -178,13 +194,14 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
178
194
if (Objects .nonNull (lastFailure )) {
179
195
builder .field (LAST_FAILURE .getPreferredName (), lastFailure );
180
196
}
197
+ builder .field (INVOCATIONS_SINCE_LAST_SUCCESS .getPreferredName (), invocationsSinceLastSuccess );
181
198
builder .endObject ();
182
199
return builder ;
183
200
}
184
201
185
202
@ Override
186
203
public int hashCode () {
187
- return Objects .hash (policy , headers , version , modifiedDate , lastSuccess , lastFailure );
204
+ return Objects .hash (policy , headers , version , modifiedDate , lastSuccess , lastFailure , invocationsSinceLastSuccess );
188
205
}
189
206
190
207
@ Override
@@ -201,7 +218,8 @@ public boolean equals(Object obj) {
201
218
&& Objects .equals (version , other .version )
202
219
&& Objects .equals (modifiedDate , other .modifiedDate )
203
220
&& Objects .equals (lastSuccess , other .lastSuccess )
204
- && Objects .equals (lastFailure , other .lastFailure );
221
+ && Objects .equals (lastFailure , other .lastFailure )
222
+ && Objects .equals (invocationsSinceLastSuccess , other .invocationsSinceLastSuccess );
205
223
}
206
224
207
225
@ Override
@@ -222,6 +240,7 @@ private Builder() {}
222
240
private Long modifiedDate ;
223
241
private SnapshotInvocationRecord lastSuccessDate ;
224
242
private SnapshotInvocationRecord lastFailureDate ;
243
+ private long invocationsSinceLastSuccess = 0L ;
225
244
226
245
public Builder setPolicy (SnapshotLifecyclePolicy policy ) {
227
246
this .policy = policy ;
@@ -253,14 +272,20 @@ public Builder setLastFailure(SnapshotInvocationRecord lastFailure) {
253
272
return this ;
254
273
}
255
274
275
+ public Builder setInvocationsSinceLastSuccess (long invocationsSinceLastSuccess ) {
276
+ this .invocationsSinceLastSuccess = invocationsSinceLastSuccess ;
277
+ return this ;
278
+ }
279
+
256
280
public SnapshotLifecyclePolicyMetadata build () {
257
281
return new SnapshotLifecyclePolicyMetadata (
258
282
Objects .requireNonNull (policy ),
259
283
Optional .ofNullable (headers ).orElse (new HashMap <>()),
260
284
version ,
261
285
Objects .requireNonNull (modifiedDate , "modifiedDate must be set" ),
262
286
lastSuccessDate ,
263
- lastFailureDate
287
+ lastFailureDate ,
288
+ invocationsSinceLastSuccess
264
289
);
265
290
}
266
291
}
0 commit comments