diff --git a/mercurial/phases.py b/mercurial/phases.py
--- a/mercurial/phases.py
+++ b/mercurial/phases.py
@@ -239,6 +239,9 @@ def pushphase(repo, nhex, oldphasestr, n
         if currentphase == oldphase and newphase < oldphase:
             advanceboundary(repo, newphase, [bin(nhex)])
             return 1
+        elif currentphase == newphase:
+            # raced, but got correct result
+            return 1
         else:
             return 0
     finally: