it is possible that two threads will request same undo node, only one of them will initialize the node. The issue is that initialization is happening outside of a lock, which was making one thread to use non- initialized node. If this change is ever a bottleneck, make a lock inside of node.