diff --git a/mercurial/manifest.py b/mercurial/manifest.py
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -1262,8 +1262,8 @@ class manifestlog(object):
         self._mancache = self._oldmanifest._mancache
 
     def __getitem__(self, node):
-        """Retrieves the manifest instance for the given node. Throws a KeyError
-        if not found.
+        """Retrieves the manifest instance for the given node. Throws a
+        LookupError if not found.
         """
         if node in self._mancache:
             cachemf = self._mancache[node]
@@ -1273,6 +1273,9 @@ class manifestlog(object):
                 isinstance(cachemf, treemanifestctx)):
                 return cachemf
 
+        if node not in self._revlog.nodemap:
+            raise LookupError(node, self._revlog.indexfile,
+                              _('no node'))
         if self._treeinmem:
             m = treemanifestctx(self._repo, '', node)
         else: