Do not sort change messages loaded from notedb by date, part 1/2

In notedb change messages are stored as part of the commit messages on
the refs/changes/XX/YYYY/meta branch. The order of the change
messages is defined by the commit order and there is no need to sort
the messages by commit timestamp.

The current sorting of change messages of one patch set by commit
timestamp does not work when commits have the same timestamp because
then the order for these change messages is left as in the input and
in the input the order is the opposite of what we need. Hence change
messages that have the same timestamp are returned in the wrong order.
As result some tests that check the correct order of the change
messages do fail, because when running the tests it happens frequently
that commits on the refs/changes/XX/YYYY/meta branch have the same
timestamp.

On parsing the refs/changes/XX/YYYY/meta branch the order is preserved
since the branch is always walked from the tip and the messages are
stored in a LinkedListMultimap which preserves the order of the values
for each key. Since the parsing is done starting at the tip of the
branch we see newest change messages first which means which means we
must reverse the result to get the correct order.

There is another place in ChangeMessageUtil where change messages that
were loaded from notedb are sorted by date. This will be removed in a
follow-up change.

Change-Id: Ic0c190b83b168341be6dab3d670b1fc86e20016b
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2015-10-27 12:15:28 +01:00
parent 1aee7b61da
commit 0d23a41720

View File

@@ -135,7 +135,7 @@ class ChangeNotesParser implements AutoCloseable {
ImmutableListMultimap<PatchSet.Id, ChangeMessage> buildMessages() {
for (Collection<ChangeMessage> v : changeMessages.asMap().values()) {
Collections.sort((List<ChangeMessage>) v, ChangeNotes.MESSAGE_BY_TIME);
Collections.reverse((List<ChangeMessage>) v);
}
return ImmutableListMultimap.copyOf(changeMessages);
}