Add test for PutFollowAction on a closed index#38236
Add test for PutFollowAction on a closed index#38236Tim-Brooks merged 6 commits intoelastic:masterfrom
PutFollowAction on a closed index#38236Conversation
This is related to elastic#35975. Currently when an index falls behind a leader it encounters a fatal exception. This commit adds a test for that scenario. Additionally, it tests that the user can stop following, close the follower index, and put follow again. After the indexing is re-bootstrapped, it will recover the documents it lost in normal following operations.
|
Pinging @elastic/es-distributed |
jasontedor
left a comment
There was a problem hiding this comment.
This looks good. Thanks for doing this. In a follow-up, can we also add some documentation for this situation?
martijnvg
left a comment
There was a problem hiding this comment.
Left one comment, LGTM otherwise.
| .filter(Objects::nonNull) | ||
| .map(ExceptionsHelper::unwrapCause) | ||
| .filter(e -> e instanceof ResourceNotFoundException) | ||
| .map(e -> (ResourceNotFoundException) e) |
There was a problem hiding this comment.
Maybe also exclude exception that do not have es.requested_operations_missing as metadata? Then we are even more sure that the exception is the right one.
| for (int i = 0; i < numDocs; i++) { | ||
| final String source = String.format(Locale.ROOT, "{\"f\":%d}", i * 2); | ||
| leaderClient().prepareIndex("index1", "doc", Integer.toString(i)).setSource(source, XContentType.JSON).get(); | ||
| leaderClient().admin().indices().flush(new FlushRequest("index1").force(true)).actionGet(); |
There was a problem hiding this comment.
nit: one flush before the force_merge is good enough :).
| assertTrue(response.isFollowIndexShardsAcked()); | ||
| assertTrue(response.isIndexFollowingStarted()); | ||
|
|
||
| final Map<ShardId, Long> firstBatchNumDocsPerShard = new HashMap<>(); |
There was a problem hiding this comment.
nit: maybe use "assertIndexFullyReplicatedToFollower"?
| assertTrue(response2.isFollowIndexShardsAcked()); | ||
| assertTrue(response2.isIndexFollowingStarted()); | ||
|
|
||
| final Map<ShardId, Long> secondBatchNumDocsPerShard = new HashMap<>(); |
There was a problem hiding this comment.
nit: maybe use "assertIndexFullyReplicatedToFollower"?
| assertThat(exceptions.size(), greaterThan(0)); | ||
| }); | ||
|
|
||
| pauseFollow("index2"); |
There was a problem hiding this comment.
what happens if we close before pausing following? What happens if we don't explicitly pause following at all? Let's also check these scenarios.
There was a problem hiding this comment.
what happens if we close before pausing following?
It works. We allow closing a follower index. There is a test that checks this behavior testCloseFollowIndex.
Let's also check these scenarios.
I added a test for the failure scenarios in the restart following case (index still open and following not paused).
This is related to elastic#35975. Currently when an index falls behind a leader it encounters a fatal exception. This commit adds a test for that scenario. Additionally, it tests that the user can stop following, close the follower index, and put follow again. After the indexing is re-bootstrapped, it will recover the documents it lost in normal following operations.
This is related to #35975. Currently when an index falls behind a leader it encounters a fatal exception. This commit adds a test for that scenario. Additionally, it tests that the user can stop following, close the follower index, and put follow again. After the indexing is re-bootstrapped, it will recover the documents it lost in normal following operations.
…-lease-expiration * elastic/master: (24 commits) Add support for API keys to access Elasticsearch (elastic#38291) Add typless client side GetIndexRequest calls and response class (elastic#37778) Limit token expiry to 1 hour maximum (elastic#38244) add docs saying mixed-cluster ILM is not supported (elastic#37954) Skip unsupported languages for tests (elastic#38328) Deprecate `_type` in simulate pipeline requests (elastic#37949) Mute testCannotShrinkLeaderIndex (elastic#38374) Tighten mapping syncing in ccr remote restore (elastic#38071) Add test for `PutFollowAction` on a closed index (elastic#38236) Fix SSLContext pinning to TLSV1.2 in reload tests (elastic#38341) Mute RareClusterStateIT.testDelayedMappingPropagationOnReplica (elastic#38357) Deprecate types in rollover index API (elastic#38039) Types removal - fix FullClusterRestartIT warning expectations (elastic#38310) Fix ILM explain response to allow unknown fields (elastic#38054) Mute testFollowIndexAndCloseNode (elastic#38360) Docs: Drop inline callout from scroll example (elastic#38340) Deprecate HLRC security methods (elastic#37883) Remove types from Monitoring plugin "backend" code (elastic#37745) Add Composite to AggregationBuilders (elastic#38207) Clarify slow cluster-state log messages (elastic#38302) ...
This is related to #35975. Currently when an index falls behind a leader
it encounters a fatal exception. This commit adds a test for that
scenario. Additionally, it tests that the user can stop following, close
the follower index, and put follow again. After the indexing is
re-bootstrapped, it will recover the documents it lost in normal
following operations.