diff --git a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
index c1614d64afe45e60c23dabdbacf968d6cde28549..ff172e40e9b19d09343d03458e917d65d8aa1731 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
@@ -609,15 +609,15 @@ protected function getHighWaterField() {
    * {@inheritdoc}
    */
   public function preRollback(MigrateRollbackEvent $event) {
-    // Nothing to do in this implementation.
+    // Reset the high-water mark.
+    $this->saveHighWater(NULL);
   }
 
   /**
    * {@inheritdoc}
    */
   public function postRollback(MigrateRollbackEvent $event) {
-    // Reset the high-water mark.
-    $this->saveHighWater(NULL);
+    // Nothing to do in this implementation.
   }
 
   /**
diff --git a/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php b/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php
index 2f0b85ffbc472e18ebd69cbb7e183588ee09f1da..e344e3e23e841e2cee10f827b2e912e772aef681 100644
--- a/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php
+++ b/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php
@@ -9,6 +9,7 @@
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
 use Drupal\Core\KeyValueStore\KeyValueStoreInterface;
+use Drupal\migrate\Event\MigrateRollbackEvent;
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\MigrateExecutable;
 use Drupal\migrate\MigrateSkipRowException;
@@ -448,6 +449,32 @@ protected function getMigrateExecutable($migration) {
     return new MigrateExecutable($migration, $message, $event_dispatcher);
   }
 
+  /**
+   * @covers ::preRollback
+   */
+  public function testPreRollback(): void {
+    $this->migrationConfiguration['id'] = 'test_migration';
+    $plugin_id = 'test_migration';
+    $migration = $this->getMigration();
+
+    // Verify that preRollback() sets the high water mark to NULL.
+    $key_value = $this->createMock(KeyValueStoreInterface::class);
+    $key_value->expects($this->once())
+      ->method('set')
+      ->with($plugin_id, NULL);
+    $key_value_factory = $this->createMock(KeyValueFactoryInterface::class);
+    $key_value_factory->expects($this->once())
+      ->method('get')
+      ->with('migrate:high_water')
+      ->willReturn($key_value);
+    $container = new ContainerBuilder();
+    $container->set('keyvalue', $key_value_factory);
+    \Drupal::setContainer($container);
+
+    $source = new StubSourceGeneratorPlugin([], $plugin_id, [], $migration);
+    $source->preRollback(new MigrateRollbackEvent($migration));
+  }
+
 }
 
 /**