Fix for error on complex case involving multiple distribution destroy… #4669
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Unfortunately I wasn't able to come up with a natural test case for this. I was able to confirm it works with a copy of prod data though.
Long story short - a number of events interacted with each other weirdly because we are using
eventable
in the aggregate code. This actually does a database call, and if the object in question isn't there (because, say, it was destroyed), this returns nil. The code then uses this nil value as a hash lookup, meaning that all similar events would be grouped together and cause weirdness with math since items it expects to be there aren't, and vice versa.Due to emergent properties of the system, it happens to be that in most cases this still works as expected, which is kind of bizarre. Hence my inability to get a working unit test.
As a side benefit, all the DB calls now disappear and this code is much much faster than it was.