diff --git a/src/profiling/meter_manager.cpp b/src/profiling/meter_manager.cpp
index c84754f2c77b1d274850903974783dd1d1a30d0b..01a01b0305f3391771bdf1b1142ef0cca02fe60f 100644
--- a/src/profiling/meter_manager.cpp
+++ b/src/profiling/meter_manager.cpp
@@ -16,15 +16,14 @@ meter_manager::meter_manager() {
 };
 
 void meter_manager::checkpoint(std::string name) {
-    checkpoint_names.push_back(std::move(name));
-
     // Enforce a global synchronization point the first time that the meters
     // are used, to ensure that times measured across all domains are
     // synchronised.
-    if (meters.size()==0) {
+    if (checkpoint_names.size()==0) {
         communication::global_policy::barrier();
     }
 
+    checkpoint_names.push_back(std::move(name));
     for (auto& m: meters) {
         m->take_reading();
     }