Mnesia Backup traverse does not find :db_nodes field

Hello,
I have mnesia database which I want to change its node name, I have followed erlang official documentation and end up by this code which I run on :firstnode@host:

:mnesia.stop()
:mnesia.start()
Process.sleep(200)
:mnesia.backup('backup.bup')
change_node_name(:mnesia_backup, :firstnode@host, :secondnode@host, 'backup.bup', 'new_backup.bup')

###########

 defp change_node_name(mod, from, to, source, target) do
     switch =
       fn(node) when node == from -> 
           to
         (node) when node == to -> 
           throw({:error, :already_exists})
         (node) -> node
       end
     convert =
       fn({:schema, :db_nodes, nodes}, acc) ->
           {[{:schema, :db_nodes, :lists.map(switch, nodes)}], acc}
         ({:schema, :version, version}, acc) ->
           {[{:schema, :version, version}], acc}
         ({:schema, :cookie, cookie}, acc) ->
           {[{:schema, :cookie, cookie}], acc}
         ({:schema, tab, create_list}, acc) ->
           keys = [:ram_copies, :disc_copies, :disc_only_copies]
           opt_switch =
             fn({key, val}) ->
               case :lists.member(key, keys) do
                 true -> 
                   {key, :lists.map(switch, val)}
                 false-> 
                   {key, val}
               end
             end
             {[{:schema, tab, :lists.map(opt_switch, create_list)}], acc}
         (other, acc) ->
             {[other], acc}
       end
     :mnesia.traverse_backup(source, mod, target, mod, convert, :switched)
   end

And when trying to restore the new backend from :secondnode@host, the database still remote.
I did a lookup inside this code, the most important part is {:schema, :db_nodes, nodes} however this clause has never been matched, also (other, acc) has not matched, the only matched clause is {:schema, tab, create_list}, so any help please ? thank you.