From 1148861074393e05a123833a6338b5c9e808bc24 Mon Sep 17 00:00:00 2001 From: Artem Prigoda Date: Wed, 22 May 2024 14:05:52 +0200 Subject: [PATCH] [test] Print out recovery translog state (#108858) The test in #108037 failed only once in 3 months, it never reproduces on my machine. Let's print the state of translog before verifying, so we have more debug information about it if the failure ever happens again. See #108037 * Update server/src/main/java/org/elasticsearch/indices/recovery/RecoveryState.java Co-authored-by: David Turner --------- Co-authored-by: David Turner --- .../gateway/ReplicaShardAllocatorIT.java | 4 +++- .../elasticsearch/indices/recovery/RecoveryState.java | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/gateway/ReplicaShardAllocatorIT.java b/server/src/internalClusterTest/java/org/elasticsearch/gateway/ReplicaShardAllocatorIT.java index e7988d447571a..ae0a1e15923ec 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/gateway/ReplicaShardAllocatorIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/gateway/ReplicaShardAllocatorIT.java @@ -439,7 +439,9 @@ private void assertNoOpRecoveries(String indexName) { for (RecoveryState recovery : indicesAdmin().prepareRecoveries(indexName).get().shardRecoveryStates().get(indexName)) { if (recovery.getPrimary() == false) { assertThat(recovery.getIndex().fileDetails(), empty()); - assertThat(recovery.getTranslog().totalLocal(), equalTo(recovery.getTranslog().totalOperations())); + var translog = recovery.getTranslog(); + logger.info("Verifying recovery translog state: {} for index: {}", translog, indexName); + assertThat(translog.totalLocal(), equalTo(translog.totalOperations())); } } } diff --git a/server/src/main/java/org/elasticsearch/indices/recovery/RecoveryState.java b/server/src/main/java/org/elasticsearch/indices/recovery/RecoveryState.java index b1590a282fc8d..3c68289033897 100644 --- a/server/src/main/java/org/elasticsearch/indices/recovery/RecoveryState.java +++ b/server/src/main/java/org/elasticsearch/indices/recovery/RecoveryState.java @@ -610,6 +610,17 @@ public synchronized XContentBuilder toXContent(XContentBuilder builder, Params p builder.humanReadableField(Fields.TOTAL_TIME_IN_MILLIS, Fields.TOTAL_TIME, new TimeValue(time())); return builder; } + + @Override + public synchronized String toString() { + return Strings.format( + "Translog{recovered=%d, total=%d, totalOnStart=%d, totalLocal=%d}", + recovered, + total, + totalOnStart, + totalLocal + ); + } } public static class FileDetail implements ToXContentObject, Writeable {