From b4a524722a2466ede935aefd7b24a1e08fdbf076 Mon Sep 17 00:00:00 2001 From: 9uapaw Date: Wed, 28 Jul 2021 04:35:20 +0200 Subject: [PATCH] YARN-9551. TestTimelineClientV2Impl.testSyncCall fails intermittent (#3212) Co-authored-by: Andras Gyori --- .../api/impl/TestTimelineClientV2Impl.java | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClientV2Impl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClientV2Impl.java index 6770c07fca..8d437af307 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClientV2Impl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClientV2Impl.java @@ -248,24 +248,36 @@ public void testSyncCall() throws Exception { Thread.sleep(TIME_TO_SLEEP); } printReceivedEntities(); - Assert.assertEquals("TimelineEntities not published as desired", 3, - client.getNumOfTimelineEntitiesPublished()); + + boolean asyncPushesMerged = client.getNumOfTimelineEntitiesPublished() == 3; + int lastPublishIndex = asyncPushesMerged ? 2 : 3; + TimelineEntities firstPublishedEntities = client.getPublishedEntities(0); Assert.assertEquals("sync entities should not be merged with async", 1, firstPublishedEntities.getEntities().size()); - // test before pushing the sync entities asyncs are merged and pushed - TimelineEntities secondPublishedEntities = client.getPublishedEntities(1); - Assert.assertEquals( - "async entities should be merged before publishing sync", 2, - secondPublishedEntities.getEntities().size()); - Assert.assertEquals("Order of Async Events Needs to be FIFO", "2", - secondPublishedEntities.getEntities().get(0).getId()); - Assert.assertEquals("Order of Async Events Needs to be FIFO", "3", - secondPublishedEntities.getEntities().get(1).getId()); + // async push does not guarantee a merge but is FIFO + if (asyncPushesMerged) { + TimelineEntities secondPublishedEntities = client.getPublishedEntities(1); + Assert.assertEquals( + "async entities should be merged before publishing sync", 2, + secondPublishedEntities.getEntities().size()); + Assert.assertEquals("Order of Async Events Needs to be FIFO", "2", + secondPublishedEntities.getEntities().get(0).getId()); + Assert.assertEquals("Order of Async Events Needs to be FIFO", "3", + secondPublishedEntities.getEntities().get(1).getId()); + } else { + TimelineEntities secondAsyncPublish = client.getPublishedEntities(1); + Assert.assertEquals("Order of Async Events Needs to be FIFO", "2", + secondAsyncPublish.getEntities().get(0).getId()); + TimelineEntities thirdAsyncPublish = client.getPublishedEntities(2); + Assert.assertEquals("Order of Async Events Needs to be FIFO", "3", + thirdAsyncPublish.getEntities().get(0).getId()); + } // test the last entity published is sync put - TimelineEntities thirdPublishedEntities = client.getPublishedEntities(2); + TimelineEntities thirdPublishedEntities = + client.getPublishedEntities(lastPublishIndex); Assert.assertEquals("sync entities had to be published at the last", 1, thirdPublishedEntities.getEntities().size()); Assert.assertEquals("Expected last sync Event is not proper", "4",