Its been a while since I was dabbling in DNS setups, so my knowledge might be a bit outdated.
We have a domain for which master server is administered by our team, and slave server is provided by the hosting company. At some point we have decided to switch to another hosting company. Also while at it, we decided that both master and slave servers would be administered by us. As a part of preparing for this process we have reduced refresh, retry and expire parameters of the domain to cause any changes to propagate a bit faster. Then we moved server to the new host, made changes to zone file, raised up serial and reloaded DNS server. The propagation process is somehow unbalanced. Most of the DNS servers out there have fresh data. However some do not, even when it is waaayy past our expiry setting and (forced by some DNS admins) default expiry setting of one week.
While investigating possible reasons for this we have found, that our server was misconfigured and was allowing queries only from slave. So during a pretty long period of time any outside query for our server would fail, but would work with slave. This was of course corrected immidiatelly. We have also found that, previous hosting company still has our slave zone up and responds to manual (nslookup/host) queries providing outdated view of an zone.
So my questions is: can an old slave dns server, somehow be responsible for flaky DNS propagation? If some DNS server hits expire/refresh time for some zone, does it get his data by walking DNS tree all the way from top (root servers)? Or does it simply check with the server that it recently got zone information from?
EDIT: Sorry for not mentioning it clearly, but naturally I changed DNS entries for the domain at the registar level. If I do non-recursive queries with nslookup/host and work your way down from TLD to my domain everything is consisten with what schould be. Yet still some DNS servers provide old zone data as non-authoritative answer.