code: func (s *Store) ensureNoNodeWithSimilarNameTxn(tx *memdb.Txn, node *structs.Node, allowClashWithoutID bool) error {
  	// Retrieve all of the nodes
  	enodes, err := tx.Get("nodes", "id")
  	if err != nil {
  		return fmt.Errorf("Cannot lookup all nodes: %s", err)
  	}
  	for nodeIt := enodes.Next(); nodeIt != nil; nodeIt = enodes.Next() {
  		enode := nodeIt.(*structs.Node)
  		if strings.EqualFold(node.Node, enode.Node) && node.ID != enode.ID {
  			if !(enode.ID == "" && allowClashWithoutID) {
  				return fmt.Errorf("Node name %s is reserved by node %s with name %s", node.Node, enode.ID, enode.Node)
  			}
  		}
  	}
  	return nil
  }
docs: // ensureNoNodeWithSimilarNameTxn checks that no other node has conflict in its name
  // If allowClashWithoutID then, getting a conflict on another node without ID will be allowed