diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -1016,7 +1016,7 @@ def createmarkers(repo, relations, flag=
             if saveeffectflag:
                 # The effect flag is saved in a versioned field name for future
                 # evolution
-                effectflag = obsutil.geteffectflag(rel)
+                effectflag = obsutil.geteffectflag(prec, sucs)
                 localmetadata[obsutil.EFFECTFLAGFIELD] = "%d" % effectflag
 
             # Creating the marker causes the hidden cache to become invalid,
diff --git a/mercurial/obsutil.py b/mercurial/obsutil.py
--- a/mercurial/obsutil.py
+++ b/mercurial/obsutil.py
@@ -413,15 +413,13 @@ def _cmpdiff(leftctx, rightctx):
             return False
     return True
 
-def geteffectflag(relation):
+def geteffectflag(source, successors):
     """ From an obs-marker relation, compute what changed between the
     predecessor and the successor.
     """
     effects = 0
 
-    source = relation[0]
-
-    for changectx in relation[1]:
+    for changectx in successors:
         # Check if description has changed
         if changectx.description() != source.description():
             effects |= DESCCHANGED