1717import org .elasticsearch .common .xcontent .XContentType ;
1818import org .elasticsearch .index .IndexService ;
1919import org .elasticsearch .index .engine .Engine ;
20+ import org .elasticsearch .index .seqno .RetentionLease ;
21+ import org .elasticsearch .index .seqno .RetentionLeaseActions ;
22+ import org .elasticsearch .index .shard .ShardId ;
2023import org .elasticsearch .index .translog .Translog ;
2124import org .elasticsearch .plugins .Plugin ;
2225import org .elasticsearch .test .ESSingleNodeTestCase ;
@@ -128,17 +131,22 @@ public void testMissingOperations() throws Exception {
128131 forceMergeRequest .maxNumSegments (1 );
129132 client ().admin ().indices ().forceMerge (forceMergeRequest ).actionGet ();
130133
134+ client ().admin ().indices ().execute (RetentionLeaseActions .Add .INSTANCE , new RetentionLeaseActions .AddRequest (
135+ new ShardId (resolveIndex ("index" ), 0 ), "test" , RetentionLeaseActions .RETAIN_ALL , "ccr" )).get ();
136+
131137 ShardStats shardStats = client ().admin ().indices ().prepareStats ("index" ).get ().getIndex ("index" ).getShards ()[0 ];
132138 String historyUUID = shardStats .getCommitStats ().getUserData ().get (Engine .HISTORY_UUID_KEY );
139+ Collection <RetentionLease > retentionLeases = shardStats .getRetentionLeaseStats ().retentionLeases ().leases ();
133140 ShardChangesAction .Request request = new ShardChangesAction .Request (shardStats .getShardRouting ().shardId (), historyUUID );
134141 request .setFromSeqNo (0L );
135142 request .setMaxOperationCount (1 );
136143
137144 {
138145 ResourceNotFoundException e =
139146 expectThrows (ResourceNotFoundException .class , () -> client ().execute (ShardChangesAction .INSTANCE , request ).actionGet ());
140- assertThat (e .getMessage (), equalTo ("Operations are no longer available for replicating. Maybe increase the retention setting " +
141- "[index.soft_deletes.retention.operations]?" ));
147+ assertThat (e .getMessage (), equalTo ("Operations are no longer available for replicating. " +
148+ "Existing retention leases [" + retentionLeases + "]; maybe increase the retention lease period setting " +
149+ "[index.soft_deletes.retention_lease.period]?" ));
142150
143151 assertThat (e .getMetadataKeys ().size (), equalTo (1 ));
144152 assertThat (e .getMetadata (Ccr .REQUESTED_OPS_MISSING_METADATA_KEY ), notNullValue ());
@@ -157,7 +165,8 @@ public void testMissingOperations() throws Exception {
157165
158166 ResourceNotFoundException cause = (ResourceNotFoundException ) e .getCause ();
159167 assertThat (cause .getMessage (), equalTo ("Operations are no longer available for replicating. " +
160- "Maybe increase the retention setting [index.soft_deletes.retention.operations]?" ));
168+ "Existing retention leases [" + retentionLeases + "]; maybe increase the retention lease period setting " +
169+ "[index.soft_deletes.retention_lease.period]?" ));
161170 assertThat (cause .getMetadataKeys ().size (), equalTo (1 ));
162171 assertThat (cause .getMetadata (Ccr .REQUESTED_OPS_MISSING_METADATA_KEY ), notNullValue ());
163172 assertThat (cause .getMetadata (Ccr .REQUESTED_OPS_MISSING_METADATA_KEY ), contains ("0" , "0" ));
0 commit comments