zhuzhurk commented on a change in pull request #12278: URL: https://github.com/apache/flink/pull/12278#discussion_r441347521
########## File path: flink-runtime/src/test/java/org/apache/flink/runtime/jobmaster/slotpool/DualKeyLinkedMapTest.java ########## @@ -85,4 +85,28 @@ public void ensuresOneToOneMappingBetweenKeysSameSecondaryKey() { assertThat(map.getByKeyB(1), is(secondValue)); assertThat(map.getByKeyA(2), is(secondValue)); } + + @Test + public void testPrimaryKeyOrderIsNotAffectedIfReInsertedWithSameSecondaryKey() { + final DualKeyLinkedMap<Integer, Integer, String> map = new DualKeyLinkedMap<>(2); + + final String value = "foobar"; + map.put(1, 1, value); + map.put(2, 2, value); + + map.put(1, 1, value); + assertThat(map.keySetA().iterator().next(), is(1)); Review comment: True. Added verifications for values. ########## File path: flink-runtime/src/main/java/org/apache/flink/runtime/jobmaster/slotpool/DualKeyLinkedMap.java ########## @@ -74,6 +74,20 @@ public V getKeyB(B bKey) { } } + public A getKeyA(B bKey) { + return bMap.get(bKey); + } + + public B getKeyB(A aKey) { Review comment: done. ########## File path: flink-runtime/src/main/java/org/apache/flink/runtime/jobmaster/slotpool/DualKeyLinkedMap.java ########## @@ -74,6 +74,20 @@ public V getKeyB(B bKey) { } } + public A getKeyA(B bKey) { Review comment: done. ########## File path: flink-runtime/src/main/java/org/apache/flink/runtime/jobmaster/slotpool/DualKeyLinkedMap.java ########## @@ -64,7 +64,7 @@ public V getKeyA(A aKey) { } } - public V getKeyB(B bKey) { + public V getByKeyB(B bKey) { Review comment: done. ########## File path: flink-runtime/src/main/java/org/apache/flink/runtime/jobmaster/slotpool/DualKeyLinkedMap.java ########## @@ -54,7 +54,7 @@ public int size() { return aMap.size(); } - public V getKeyA(A aKey) { + public V getByKeyA(A aKey) { Review comment: done. ########## File path: flink-runtime/src/main/java/org/apache/flink/runtime/jobmaster/slotpool/DualKeyLinkedMap.java ########## @@ -22,12 +22,16 @@ import java.util.AbstractCollection; import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Set; /** - * Map which stores values under two different indices. + * Map which stores values under two different indices. The mapping of the primary key to the + * value is backed by {@link LinkedHashMap} so that the iteration order over the values and + * the primary key set is the insertion order. Note that there is no contract of the iteration + * order over the secondary key set. Review comment: done. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org