Skip to content

Commit 6162a9d

Browse files
http-api: rebased to have multimap use a linkedhashset instead of hashset when getting keys to remove non-deterministic behaviors
1 parent 38dd1eb commit 6162a9d

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

servicetalk-http-api/src/main/java/io/servicetalk/http/api/MultiMap.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.Arrays;
1919
import java.util.ConcurrentModificationException;
2020
import java.util.HashSet;
21+
import java.util.LinkedHashSet;
2122
import java.util.Iterator;
2223
import java.util.Map;
2324
import java.util.Map.Entry;
@@ -144,7 +145,7 @@ final Set<? extends K> getKeys() {
144145
return emptySet();
145146
}
146147
// Overall iteration order does not need to be preserved.
147-
final Set<K> names = new HashSet<>((int) (size() / .75), .75f);
148+
final Set<K> names = new LinkedHashSet<>((int) (size() / .75), .75f);
148149
BucketHead<K, V> bucketHead = lastBucketHead;
149150
while (bucketHead != null) {
150151
MultiMapEntry<K, V> e = bucketHead.entry;

servicetalk-http-api/src/test/java/io/servicetalk/http/api/AbstractHttpHeadersTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,9 @@ void headersWithSameNamesAndValuesShouldBeEquivalent() {
434434
assertEquals(headers2, headers1);
435435
assertEquals(headers1, headers1);
436436
assertEquals(headers2, headers2);
437+
assertEquals(headers1.hashCode(), headers2.hashCode());
438+
assertEquals(headers1.hashCode(), headers1.hashCode());
439+
assertEquals(headers2.hashCode(), headers2.hashCode());
437440
}
438441

439442
@Test

0 commit comments

Comments
 (0)