diff --git a/openedx/core/djangoapps/content/course_overviews/models.py b/openedx/core/djangoapps/content/course_overviews/models.py
index 50ed256a3aba0a5211482902778f0c575f59960a..60031d879aa0f7caea06ec07f947c77031194f76 100644
--- a/openedx/core/djangoapps/content/course_overviews/models.py
+++ b/openedx/core/djangoapps/content/course_overviews/models.py
@@ -387,14 +387,8 @@ class CourseOverview(TimeStampedModel):
         # Regenerate the thumbnail images if they're missing (either because
         # they were never generated, or because they were flushed out after
         # a change to CourseOverviewImageConfig.
-        if course_overview:
-            if hasattr(course_overview, 'image_set'):
-                image_set = course_overview.image_set
-                if not image_set.small_url or not image_set.large_url:
-                    CourseOverviewImageSet.objects.filter(course_overview=course_overview).delete()
-                    CourseOverviewImageSet.create(course_overview)
-            else:
-                CourseOverviewImageSet.create(course_overview)
+        if course_overview and not hasattr(course_overview, 'image_set'):
+            CourseOverviewImageSet.create(course_overview)
 
         return course_overview or cls.load_from_module_store(course_id)
 
diff --git a/openedx/core/djangoapps/content/course_overviews/tests/test_course_overviews.py b/openedx/core/djangoapps/content/course_overviews/tests/test_course_overviews.py
index ff6f597de4bb236d53a14c3c45805a380231d51a..3511fd802f648661b55c1f9415938e336bcfc6c7 100644
--- a/openedx/core/djangoapps/content/course_overviews/tests/test_course_overviews.py
+++ b/openedx/core/djangoapps/content/course_overviews/tests/test_course_overviews.py
@@ -601,6 +601,11 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
         course_image_content = StaticContent(course_image_asset_key, image_name, 'image/png', image_buff)
         contentstore().save(course_image_content)
 
+    def get_from_id(self, course_id):
+        """Get course overview, but makes sure that we are actually calling the method by wiping cache"""
+        self.clear_caches()  # wipe out the request cache so that get_from_id is actually run each time
+        return CourseOverview.get_from_id(course_id)
+
     def set_config(self, enabled):
         """
         Enable or disable thumbnail generation config.
@@ -682,7 +687,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
             course = CourseFactory.create(
                 default_store=modulestore_type, course_image=course_image
             )
-            course_overview_before = CourseOverview.get_from_id(course.id)
+            course_overview_before = self.get_from_id(course.id)
 
         # This initial seeding should create an entry for the image_set.
         assert hasattr(course_overview_before, 'image_set')
@@ -697,7 +702,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
         self.set_config(False)
 
         # Fetch a new CourseOverview
-        course_overview_after = CourseOverview.get_from_id(course.id)
+        course_overview_after = self.get_from_id(course.id)
 
         # Assert that the data still exists for debugging purposes
         assert hasattr(course_overview_after, 'image_set')
@@ -717,7 +722,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
         """
         with self.store.default_store(modulestore_type):
             course = CourseFactory.create(default_store=modulestore_type)
-            overview = CourseOverview.get_from_id(course.id)
+            overview = self.get_from_id(course.id)
 
             # First the behavior when there's no CDN enabled...
             AssetBaseUrlConfig.objects.all().delete()
@@ -743,7 +748,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
         """
         with self.store.default_store(modulestore_type):
             course = CourseFactory.create(default_store=modulestore_type)
-            overview = CourseOverview.get_from_id(course.id)
+            overview = self.get_from_id(course.id)
 
             # Now enable the CDN...
             AssetBaseUrlConfig.objects.create(enabled=True, base_url='fakecdn.edx.org')
@@ -771,7 +776,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
         """
         with self.store.default_store(modulestore_type):
             course = CourseFactory.create(default_store=modulestore_type)
-            overview = CourseOverview.get_from_id(course.id)
+            overview = self.get_from_id(course.id)
 
             # Now enable the CDN...
             AssetBaseUrlConfig.objects.create(enabled=True, base_url='fakecdn.edx.org')
@@ -818,7 +823,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
         # The next time we create a CourseOverview, the images are explicitly
         # *not* regenerated.
         with mock.patch('openedx.core.lib.courses.create_course_image_thumbnail') as patched_create_thumbnail:
-            course_overview = CourseOverview.get_from_id(course_overview.id)
+            self.get_from_id(course_overview.id)
             patched_create_thumbnail.assert_not_called()
 
     @ddt.data(
@@ -862,7 +867,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
                 self.set_config(enabled=False)
 
             # Now generate the CourseOverview...
-            course_overview = CourseOverview.get_from_id(course.id)
+            course_overview = self.get_from_id(course.id)
 
             # If create_after_overview is True, no image_set exists yet. Verify
             # that, then switch config back over to True and it should lazily
@@ -870,7 +875,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
             if create_after_overview:
                 assert not hasattr(course_overview, 'image_set')
                 self.set_config(enabled=True)
-                course_overview = CourseOverview.get_from_id(course.id)
+                course_overview = self.get_from_id(course.id)
 
             assert hasattr(course_overview, 'image_set')
             image_urls = course_overview.image_urls
@@ -931,7 +936,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
 
         # Now generate the CourseOverview...
         config = CourseOverviewImageConfig.current()
-        course_overview = CourseOverview.get_from_id(course.id)
+        course_overview = self.get_from_id(course.id)
         image_urls = course_overview.image_urls
 
         for image_url, target in [(image_urls['small'], config.small), (image_urls['large'], config.large)]:
@@ -972,7 +977,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
         course = CourseFactory.create()
 
         # First create our CourseOverview
-        overview = CourseOverview.get_from_id(course.id)
+        overview = self.get_from_id(course.id)
         assert not hasattr(overview, 'image_set')
 
         # Now create an ImageSet by hand...
@@ -1012,7 +1017,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
         self._create_course_image(course, course_image)
 
         # Create course overview with image set.
-        overview = CourseOverview.get_from_id(course.id)
+        overview = self.get_from_id(course.id)
         assert hasattr(overview, 'image_set')
 
         # Make sure the thumbnail names come out as expected...
@@ -1053,7 +1058,7 @@ class CourseOverviewImageSetTestCase(ModuleStoreTestCase):
             if expected_url is None:
                 expected_url = course_image_url(course)
 
-            course_overview = CourseOverview.get_from_id(course.id)
+            course_overview = self.get_from_id(course.id)
 
             # All the URLs that come back should be for the expected_url
             assert course_overview.image_urls == {'raw': expected_url, 'small': expected_url, 'large': expected_url}