diff --git a/mercurial/manifest.py b/mercurial/manifest.py
index 1f92056c40666dce45fca946144a4afb3cdb4279_bWVyY3VyaWFsL21hbmlmZXN0LnB5..1a0c1ad578331bfb4cc9cd6ee83bafe4b759f6f7_bWVyY3VyaWFsL21hbmlmZXN0LnB5 100644
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -1262,8 +1262,8 @@
         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 @@
                 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: