diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm
index cb84f1f2c6..b902df4dc7 100644
--- a/src/test/perl/PostgresNode.pm
+++ b/src/test/perl/PostgresNode.pm
@@ -918,6 +918,9 @@ END
 		$node->teardown_node;
 	}
 
+	# Preserve temporary directory for this test on failure
+	$File::Temp::KEEP_ALL = 1 unless Test::More->builder->is_passing;
+
 	$? = $exit_code;
 }
 
