diff --git a/validator/sawtooth_validator/merkle.py b/validator/sawtooth_validator/merkle.py
index <HASH>..<HASH> 100644
--- a/validator/sawtooth_validator/merkle.py
+++ b/validator/sawtooth_validator/merkle.py
@@ -40,7 +40,13 @@ class MerkleDatabase(object):
             yield item
 
     def _yield_iter(self, path, hash_key):
-        node = self._get_by_hash(hash_key)
+        try:
+            node = self._get_by_addr(path)
+        except KeyError:
+            raise StopIteration()
+
+        if path == INIT_ROOT_KEY:
+            node = self._get_by_hash(hash_key)
 
         if node["v"] is not None:
             yield (path, self._decode(node["v"]))
Updates for iterating from non-root paths in MerkleDatabase

If the path isn't in the trie, raise StopIteration().
If the path isn't the root node, use _get_by_addr()
to get it.