diff --git a/nav2_amcl/include/nav2_amcl/amcl_node.hpp b/nav2_amcl/include/nav2_amcl/amcl_node.hpp
index 92a7cd5438797f942720d608d92da8dda3181b9d..f5cac8cbc9279dd054025c17dfad5665fde9932c 100644
--- a/nav2_amcl/include/nav2_amcl/amcl_node.hpp
+++ b/nav2_amcl/include/nav2_amcl/amcl_node.hpp
@@ -86,7 +86,7 @@ protected:
   map_t * map_{nullptr};
   map_t * convertMap(const nav_msgs::msg::OccupancyGrid & map_msg);
   bool first_map_only_{true};
-  bool first_map_received_{false};
+  std::atomic<bool> first_map_received_{false};
   amcl_hyp_t * initial_pose_hyp_;
   std::recursive_mutex configuration_mutex_;
   rclcpp::Subscription<nav_msgs::msg::OccupancyGrid>::ConstSharedPtr map_sub_;
diff --git a/nav2_amcl/src/amcl_node.cpp b/nav2_amcl/src/amcl_node.cpp
index 60facfbe9c8ea78fd11830c848ba10b05eefa9ae..adb8f9a3defccad381b05205dcedbcd951d4b3a2 100644
--- a/nav2_amcl/src/amcl_node.cpp
+++ b/nav2_amcl/src/amcl_node.cpp
@@ -285,6 +285,7 @@ AmclNode::on_cleanup(const rclcpp_lifecycle::State & /*state*/)
   // Map
   map_free(map_);
   map_ = nullptr;
+  first_map_received_ = false;
   free_space_indices.resize(0);
 
   // Transforms