From 67c297e989e0c4c621a4a02075e14ecfb18844b7 Mon Sep 17 00:00:00 2001 From: Fabian Meiswinkel Date: Wed, 28 Apr 2021 16:54:17 +0000 Subject: [PATCH] Really Adding detection for transient generation of invalid json in ChangeFeedStartFromInternal (#20996) * Really Adding detection for transient generation of invalid json in ChangeFeedStartFromInternal * Fixing StackOverflow error due to unintentional recursion * Addressing test flakiness --- .../cosmos/spark/PartitionMetadataCacheITest.scala | 2 +- .../implementation/ChangeFeedStartFromInternal.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/test/scala/com/azure/cosmos/spark/PartitionMetadataCacheITest.scala b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/test/scala/com/azure/cosmos/spark/PartitionMetadataCacheITest.scala index b6b046b7574f1..83d7a04d68a18 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/test/scala/com/azure/cosmos/spark/PartitionMetadataCacheITest.scala +++ b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/src/test/scala/com/azure/cosmos/spark/PartitionMetadataCacheITest.scala @@ -96,7 +96,7 @@ class PartitionMetadataCacheITest newStaleCachedItemRefreshPeriodInMsOverride = Some(10 * 1000), newCachedItemTtlInMsOverride = Some(50)) - Thread.sleep(500) + Thread.sleep(2000) //scalastyle:on magic.number PartitionMetadataCache.purge(containerConfig, feedRange) shouldEqual false diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/changefeed/implementation/ChangeFeedStartFromInternal.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/changefeed/implementation/ChangeFeedStartFromInternal.java index 6660347059493..5d03d91fd32fd 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/changefeed/implementation/ChangeFeedStartFromInternal.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/changefeed/implementation/ChangeFeedStartFromInternal.java @@ -43,12 +43,17 @@ public void populatePropertyBag() { } @Override - public String toString() - { - String json = this.toJson(); + public String toString() { + return this.toJson(); + } + + @Override + public String toJson() { + String json = super.toJson(); if (json.indexOf("\"Type\":") != json.lastIndexOf("\"Type\":")) { // TODO @fabianm Remove as soon as root caused - https://github.com/Azure/azure-sdk-for-java/issues/20635 + // "StartFrom":{"Type":"NOW","Type":"NOW"} throw new IllegalStateException("There shouldn't be any duplicate json properties!"); }