pablobm left a comment (openstreetmap/openstreetmap-website#6379)
I'm not convinced that this change fixes the issue :thinking:
I have been abusing the test (thank you for providing it!) and I can't get it
to fail without the change. For example, I expected that adding a sleep after
`Changeset.find` (pre-change) would make the test fail, but it doesn't.
In deeper inspection, I see that the changeset **object** passed to
`DiffReader` is not the same one whose counts are increased. As in: it
represents the same changeset _conceptually_, but it is not the same object in
memory.
When `DiffReader#commit` calls `Node#from_xml_node`, the created node gets
`node.changeset_id = pt["changeset"].to_i`. ActiveRecord creates a new
`Changeset` in memory at this point. This one has the correct counts, and they
remain correct because we are already inside a transaction. When we get to
`changeset.num_created_nodes += 1` (in `Node#create_with_history`), the
increase will be correct.
Admittedly, my understanding of ACID is not great so I might be missing
something. Thoughts @tomhughes?
It might still be worth merging this and see if it helps, but I suspect we'll
continue seeing the issue.
--
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/openstreetmap-website/pull/6379#issuecomment-3338112709
You are receiving this because you are subscribed to this thread.
Message ID:
<openstreetmap/openstreetmap-website/pull/6379/[email protected]>
_______________________________________________
rails-dev mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/rails-dev