[ https://issues.apache.org/jira/browse/KAFKA-9636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17058813#comment-17058813 ]
John Roesler commented on KAFKA-9636: ------------------------------------- Hi [~psnively] , I'm sorry to hear that; I certainly wish you the best of luck in your project! Regarding the current issue, I think there's something strange happening in your serializer. In the Foreign-Key Join implementation, we expected serializers to produce the same sequence of bytes given the same input. I guess it's worth asking if that is actually a good assumption. This is the only place in the codebase where we make it. I can certainly alter the implementation to avoid this assumption, but it's pretty nice the way it is now. I've added a bunch of printlns to Streams to diagnose the issue, so let me walk you through what I'm seeing for a test that fails: {code:java} # Here's the original left-hand-side value: send LHS: { "搧豰" : { "璍눣劉㒕ꤞꌝ엧閹꒓꼆" : "Ꮲ蛢ㆥ", "딾煚曷" : 0E530, "ﯚ桵觔" : "䇕兊苩ᆔ휴嚅" }, "ui" : "obc" } # Here's the result of serializing that value send LHS: [6, 2, 2, -25, -112, 1, -16, 49, 2, 6, 3, 10, -51, -46, 1, -29, -56, 2, -55, 74, 1, -107, -46, -34, -92, 2, -35, -116, 2, -25, 23, 3, -7, 86, 2, -45, -110, 2, -58, -68, 2, 4, 3, -94, 79, -30, 27, 2, -91, -58, 4, -2, -44, 2, -38, -59, 1, -20, -99, 3, -9, -101, 1, 3, 5, 48, 69, 53, 51, 48, 3, -38, -17, 3, -11, -95, 1, -44, 39, 2, 4, 8, -43, 7, 1, -54, 69, 1, -23, 11, 2, -127, -60, -108, 70, -12, 92, 3, -30, -115, 3, -59, 90, 1, 2, 117, 105, 4, 3, 111, 98, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # At the end of the test, we look up the left-hand-side value again, and this is what we see (Confluence isn't printing unicode, but it's apparently the same) resolver LHS: { "搧豰" : { "璍눣劉㒕ꤞꌝ엧閹꒓꼆" : "Ꮲ蛢ㆥ", "딾煚曷" : 0E530, "ﯚ桵觔" : "䇕兊苩ᆔ휴嚅" }, "ui" : "obc" } # We need to serialize it again, to compare it for equality with the original LHS value above. # NOTE: although the LHS value is apparently the same, the serializer produces something different this time. It looks like the beginning is the same, but there's garbage at the end. resolver LHS serialized: [6, 2, 2, -25, -112, 1, -16, 49, 2, 6, 3, 10, -51, -46, 1, -29, -56, 2, -55, 74, 1, -107, -46, -34, -92, 2, -35, -116, 2, -25, 23, 3, -7, 86, 2, -45, -110, 2, -58, -68, 2, 4, 3, -94, 79, -30, 27, 2, -91, -58, 4, -2, -44, 2, -38, -59, 1, -20, -99, 3, -9, -101, 1, 3, 5, 48, 69, 53, 51, 48, 3, -38, -17, 3, -11, -95, 1, -44, 39, 2, 4, 8, -43, 7, 1, -54, 69, 1, -23, 11, 2, -127, -60, -108, 70, -12, 92, 3, -30, -115, 3, -59, 90, 1, 2, 117, 105, 4, 3, 111, 98, 99, 55, 57, 54, 54, 53, 48, 56, 55, 48, 56, 56, 55, 52, 50, 56, 57, 49, 57, 51, 48, 49, 54, 50, 56, 51, 50, 101, 45, 51, 50, 4, -40, -126, 2, -4, -75, 1, -53, 98, 2, -88, 98, 1, 1, -58, -109, 3, 0, 8, -30, 78, 1, -123, -90, -4, 15, 3, -39, 13, 2, -35, -33, 3, -1, -108, 2, -72, -66, -32, -79, 1, 0, 5, -53, -108, 2, -91, -45, -23, 100, 1, -44, -47, 2, -22, -63, 2, 3, 19, 55, 55, 57, 52, 56, 49, 55, 55, 53, 50, 49, 52, 52, 54, 48, 51, 48, 50, 52, 6, -24, 74, 1, -51, -88, 3, -60, 124, 1, -19, -14, 3, -122, 87, -48, -4, 2, 0, 4, 4, -28, 77, 2, -84, 112, -19, 67, 1, -40, 32, 3, 5, 5, 4, 7, -35, -9, 2, -61, -108, 3, -58, -126, 2, -35, -22, 2, -40, 54, 1, -30, -45, 3, -29, -1, 3, 3, 20, 45, 57, 50, 50, 51, 51, 55, 50, 48, 51, 54, 56, 53, 52, 55, 55, 53, 56, 48, 56, 3, 5, 48, 46, 57, 57, 55, 0, 3, 24, 45, 55, 49, 50, 57, 54, 53, 56, 57, 57, 57, 49, 52, 48, 53, 56, 50, 52, 51, 54, 52, 55, 56, 51, 6, 9, 3, -105, -79, -15, 88, 2, -120, 124, 0, 9, -16, 25, 3, -15, 111, 2, -44, 74, 1, -17, -120, 2, -86, 18, -4, 55, 2, -19, 45, 1, -106, -13, -68, -98, 3, 13, 45, 50, 52, 57, 57, 56, 51, 55, 49, 51, 48, 55, 53, 7, -44, -118, 3, -24, -60, 1, -85, 97, -69, -94, -66, 90, -94, 109, -74, 83, 0, 7, -33, 19, 3, -73, -119, -43, 53, 1, -35, -16, 3, -61, 118, 2, -29, 119, 1, -12, -90, 1, 0, 10, -76, 42, -78, -57, -93, 125, -39, -109, 2, -50, -50, 2, -127, 4, -47, -74, 3, -53, 87, 1, -26, 55, 2, -39, -40, 1, 3, 19, 55, 54, 49, 49, 56, 55, 50, 54, 48, 55, 52, 53, 48, 49, 50, 57, 57, 57, 50, 8, -26, 58, 3, -16, -5, 2, -25, 30, 3, -3, -110, 2, -38, -111, 3, -47, -84, 2, -38, -125, 3, -53, -124, 1, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # Just for kicks, I round-tripped it again, so this is what we get if we DEserialize the last serial form (still apparently the same) resolver LHS re-de-serialized: { "搧豰" : { "璍눣劉㒕ꤞꌝ엧閹꒓꼆" : "Ꮲ蛢ㆥ", "딾煚曷" : 0E530, "ﯚ桵觔" : "䇕兊苩ᆔ휴嚅" }, "ui" : "obc" } # One last time, I serialized the round-tripped-deserialized data, and I get the same prefix, but even more garbage at the end: resolver LHS re-re-serialized: [6, 2, 2, -25, -112, 1, -16, 49, 2, 6, 3, 10, -51, -46, 1, -29, -56, 2, -55, 74, 1, -107, -46, -34, -92, 2, -35, -116, 2, -25, 23, 3, -7, 86, 2, -45, -110, 2, -58, -68, 2, 4, 3, -94, 79, -30, 27, 2, -91, -58, 4, -2, -44, 2, -38, -59, 1, -20, -99, 3, -9, -101, 1, 3, 5, 48, 69, 53, 51, 48, 3, -38, -17, 3, -11, -95, 1, -44, 39, 2, 4, 8, -43, 7, 1, -54, 69, 1, -23, 11, 2, -127, -60, -108, 70, -12, 92, 3, -30, -115, 3, -59, 90, 1, 2, 117, 105, 4, 3, 111, 98, 99, 50, 54, 52, 50, 51, 50, 57, 56, 50, 51, 50, 49, 54, 48, 49, 52, 6, 3, 2, -96, -90, -44, 52, 2, 1, 2, -85, -93, -53, 103, 1, 3, 13, 50, 50, 53, 49, 101, 50, 57, 48, 49, 56, 50, 55, 50, 9, -16, -14, 3, -38, -40, 3, -60, 29, 1, -33, -116, 2, -23, -3, 2, -48, -8, 1, -26, -29, 1, -24, -12, 1, -126, 57, 4, 0, 1, -95, -98, 6, 10, 8, -23, -115, 2, -21, -85, 2, -6, -93, 3, -54, -125, 3, -53, 6, 1, -65, -102, -14, -44, 3, -42, 35, 3, 5, 9, 1, 2, 4, 5, -26, 61, 3, -37, -64, 3, -21, 7, 1, -62, -104, 3, -33, -82, 1, 1, 3, 2, 45, 56, 4, 9, -121, 59, -60, 75, 2, -16, -80, 1, -28, 42, 2, -51, -95, 3, -1, -52, 3, -19, -37, 2, -52, 6, 2, -66, -37, 4, 3, -12, 55, 1, -11, -93, 2, -47, -49, 3, 4, 2, -111, 35, -43, -1, 3, 2, 8, -96, -16, -9, 13, 1, -1, -12, 1, -114, -62, -15, -27, 2, -41, 126, 2, -17, 1, 3, -72, 122, 0, 7, -16, 53, 1, -56, 66, 2, -60, 127, 2, -126, 125, -10, 65, 3, -70, 68, -10, 94, 2, 1, 4, -49, -103, 1, -24, -14, 3, -58, -95, 1, -37, 86, 3, 5, 6, 2, 3, 19, 54, 49, 51, 56, 49, 50, 54, 48, 55, 55, 48, 56, 51, 57, 52, 51, 57, 53, 56, 3, 4, 48, 101, 43, 50, 3, 3, 45, 53, 53, 0, 4, 6, -37, 38, 2, -62, -25, 2, -67, 94, -16, -55, 2, -19, 20, 2, -7, -50, 1, 7, -43, -67, 1, -60, 70, 2, -31, -45, 2, -14, -86, 2, -37, 92, 1, -121, -93, -4, 72, 1, 1, 6, -82, 95, -91, -61, -18, 96, 1, -40, 54, 1, -22, -64, 3, -103, -47, 4, 7, -39, -21, 1, -104, 57, -9, 124, 1, -10, -119, 3, -19, -42, 3, -63, -83, 2, -41, 118, 1, 2, -99, 95, -43, -50, 3, 6, 5, 0, 3, 2, 45, 52, 4, -42, -68, 2, -20, -126, 2, -30, 9, 1, -118, 71, 0, 5, -13, -115, 3, -93, -20, -54, 56, 2, -60, -85, 1, -2, -123, 2, 3, 27, 45, 50, 48, 53, 48, 53, 51, 56, 50, 46, 53, 48, 49, 50, 48, 69, 45, 55, 48, 51, 55, 51, 55, 56, 54, 51, 56, 7, -21, -88, 3, -83, -53, -48, 12, 1, -8, 13, 2, -59, -4, 3, -67, 21, -29, 75, 2, 3, 11, 45, 50, 49, 52, 55, 52, 56, 51, 54, 52, 57, 1, -41, 80, 2, 0, 8, -61, 31, 1, -9, -7, 3, -54, -72, 1, -9, -38, 2, -90, 68, -74, 95, -87, -107, -6, -60, 1, 0, 4, -8, -69, 2, -86, -128, -93, 50, -40, 59, 3, 3, 2, 45, 49, 8, -50, -41, 1, -20, 56, 2, -48, 76, 1, -34, 12, 3, -15, 16, 3, -32, 66, 3, -9, -111, 1, -81, -65, 0, 9, -115, 62, -29, 101, 1, -84, 36, -11, -68, 2, -15, -124, 2, -9, 9, 2, -9, -68, 2, -25, 83, 1, -53, 63, 3, 2, 10, -110, 49, -36, 29, 3, -95, 70, -55, 69, 2, -52, 121, 1, -36, 117, 1, -72, -18, -117, 95, -38, 124, 1, -29, 11, 1, 6, 9, 0, 6, 2, 0, 6, 1, 10, -43, -55, 1, -17, -87, 3, -58, -43, 2, -70, 23, -15, 97, 2, -8, -42, 3, -58, 94, 1, -106, 33, -14, 50, 1, -36, -83, 1, 3, 3, 54, 53, 55, 5, -53, 86, 2, -52, 64, 3, -119, -92, -13, -34, 1, -37, 93, 1, 5, 2, 3, 1, 48, 1, 3, -61, 89, 3, -19, 81, 1, -61, 7, 3, 4, 5, -15, 126, 2, -39, -52, 3, -28, -18, 3, -12, 82, 1, -104, -13, 1, -94, 32, 3, 13, 45, 53, 46, 54, 50, 50, 54, 50, 52, 69, 45, 49, 52, 1, -25, 32, 3, 6, 1, 9, -96, -55, -66, -113, -101, 100, -49, -46, 3, -28, 120, 2, -26, 92, 2, -41, 93, 2, -3, -84, 3, -2, -6, 1, 1, 4, -102, -32, -18, -114, 2, -64, -85, 3, -43, -59, 3, 0, 2, -122, -46, -1, -38, 2, 0, 7, -63, 82, 1, -15, -72, 3, -22, 31, 2, -34, 7, 3, -76, -1, -61, 30, 2, -113, -52, 6, 7, 0, 6, 7, 0, 2, 1, -61, 66, 1, 4, 2, -21, 8, 2, -5, 86, 2, 7, -105, 34, -59, 56, 1, -90, -114, -106, 58, -121, -76, -9, 125, 2, -56, -115, 2, 0, 6, -46, 94, 2, -9, 25, 1, -48, 13, 1, -34, 41, 2, -1, 47, 1, -45, -19, 1, 2, 10, -66, -43, -27, 3, 1, -51, 100, 2, -96, 109, -83, -117, -38, 103, 1, -26, 21, 1, -31, -94, 2, -57, 19, 3, -78, -100, 3, 4, 45, 55, 57, 55, 4, -116, 75, -72, -95, -63, -4, 1, -43, 35, 3, 0, 8, -118, -102, -8, -121, 1, -10, 33, 1, -66, 15, -4, -19, 2, -21, 81, 1, -115, -125, -9, 18, 2, 4, 0, 4, -29, -32, 1, -122, 109, -115, -120, -101, 106, 0, 5, -58, -89, 2, -103, -118, -59, 32, 2, -38, -15, 3, -34, 89, 1, 4, 0, 3, -38, 70, 1, -40, -48, 1, -108, 9, 5, 7, 1, 3, 19, 50, 56, 57, 50, 55, 49, 52, 50, 49, 56, 48, 51, 57, 53, 56, 55, 54, 55, 52, 1, 4, 0, 2, 4, 7, -16, 81, 3, -102, -17, -47, 59, 1, -7, -34, 2, -21, -14, 1, -43, -73, 1, -110, -92, 3, 19, 55, 55, 49, 54, 53, 50, 53, 56, 54, 52, 48, 56, 54, 54, 50, 51, 52, 50, 53, 5, -17, -5, 2, -19, 87, 1, -121, -113, -64, 13, 2, -26, -100, 1, 0, 4, -7, -46, 3, -25, 45, 1, -90, 19, -61, -67, 2, 5, 5, 2, 3, 41, 45, 57, 46, 54, 50, 56, 54, 53, 52, 54, 57, 52, 51, 51, 56, 48, 48, 51, 48, 57, 53, 56, 54, 48, 57, 49, 51, 52, 54, 49, 50, 50, 56, 55, 55, 49, 69, 45, 49, 57, 54, 0, 1, 1, 10, -20, -68, 2, -61, -116, 2, -22, -112, 1, -64, 8, 2, -13, 38, 2, -21, 48, 3, -107, 49, -12, -40, 3, -88, 4, -56, -8, 2, 5, 10, 4, 4, -20, 29, 2, -29, 28, 2, -22, 106, 1, -47, 27, 3, 1, 3, 10, 50, 49, 52, 55, 52, 56, 51, 54, 52, 56, 0, 1, 2, 0, 4, 3, -20, -99, 3, -15, 71, 2, -18, -53, 2, 3, 13, 45, 53, 51, 51, 54, 56, 49, 54, 50, 55, 54, 54, 55, 4, 2, -62, 93, 1, -57, 79, 1, 10, -50, -15, 2, -63, -119, 2, -103, -98, -75, -47, -4, -7, 1, -108, 106, -30, -34, 3, -2, -68, 2, -41, 40, 1, -82, 20, 0, 6, -36, -90, 1, -22, -19, 1, -98, 51, -36, 41, 3, -4, -68, 3, -34, 107, 2, 0, 7, -82, -33, -75, 73, -17, -124, 1, -64, -100, 2, -46, -1, 1, -21, -9, 1, -47, 4, 2, 4, 6, -82, 44, -61, -7, 2, -18, 117, 2, -116, 121, -54, 45, 3, -7, 15, 2, 4, -115, -77, -121, 7, -11, 0, 2, -50, -25, 1, 0, 1, -82, -99, 0, 8, -4, -36, 2, -108, -48, -10, 83, 2, -65, 102, -91, -97, -26, 115, 2, -48, -91, 1, -5, -46, 3, 4, 0, 10, -60, 52, 2, -61, -36, 1, -23, 54, 1, -13, 80, 3, -19, 32, 1, -39, -91, 1, -9, 20, 1, -67, 37, -59, -105, 3, -8, 25, 2, 3, 14, 48, 46, 51, 101, 52, 49, 55, 49, 55, 55, 49, 53, 53, 52, 2, -25, 1, 2, -31, 33, 3, 4, 9, -28, -101, 3, -49, -54, 3, -21, 62, 1, -43, 40, 2, -117, -69, -7, 122, 2, -50, -20, 3, -3, 62, 2, -14, -51, 1, 6, -10, 97, 1, -20, 94, 2, -3, 32, 1, -19, -24, 1, 12, -41, -79, 3, 3, 13, 50, 46, 57, 49, 57, 55, 48, 48, 69, 43, 49, 48, 57, 9, -49, 39, 3, -20, 124, 2, -63, -118, 3, -58, -42, 1, -31, 27, 3, -35, 110, 1, -19, -85, 3, -62, -65, 2, -2, 56, 1, 4, 6, -19, 60, 3, -6, -48, 3, -101, 30, -6, 73, 1, -19, -90, 3, -30, 59, 3, 6, -86, 18, -38, 32, 2, -99, 83, -40, 81, 1, -14, -67, 2, -41, -89, 3, 3, 11, 57, 46, 53, 50, 48, 55, 52, 69, 45, 49, 54, 3, -62, -45, 3, -1, -91, 2, -53, 12, 2, 6, 2, 10, -126, -86, -31, -113, 2, -116, 15, -79, 26, -35, -25, 2, -6, -68, 1, -32, -12, 1, -6, 95, 1, -99, 30, -59, -107, 3, 6, 2, 1, -60, -54, 3, 1, 6, -111, -50, -28, -52, 3, -84, 87, -59, -103, 2, -29, -119, 2, -55, -104, 1, 5, 7, 3, 19, 57, 50, 50, 51, 51, 55, 50, 48, 51, 54, 56, 53, 52, 55, 55, 53, 56, 48, 55, 5, 3, 0, 3, 16, 45, 50, 49, 52, 55, 52, 56, 51, 54, 52, 57, 101, 45, 49, 51, 56, 0, 5, 8, 4, 7, -56, -73, 2, -15, -115, 2, -54, 72, 3, -52, 83, 2, -100, 55, -55, -112, 1, -13, 82, 3, 4, 7, -5, 59, 3, -43, -11, 2, -61, -125, 2, -88, 115, -28, 28, 1, -11, -21, 3, -40, -79, 2, 2, 1, 0, 2, 0, 4, 9, -69, 48, -39, 88, 2, -33, 124, 2, -38, -22, 2, -10, -27, 2, -84, -115, -66, 7, -16, -34, 2, -95, 123, 0, 2, 4, 2, -22, -126, 3, -39, -55, 2, 0, 2, -59, 22, 1, -16, 24, 3, 2, 5, -9, 13, 3, -14, -128, 3, -105, 43, -48, -14, 3, -58, -122, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] {code} It looks to me like your serializer is reusing a byte buffer for different values, but it's not properly bounding the result when it returns the byte array. As a consequence, we see garbage after the end of the serialized value. Plus, it looks like when you round-trip, it winds up thinking that it needs more and more memory allocated to the byte array. Although it may indeed not be good to assume that serializers always produce the same output given the same input, the behavior we observe here looks like a seriously flawed serde. As a consequence, I'm tempted to call this issue not a Streams bug. What do you think? -John > Simple join of two KTables fails > -------------------------------- > > Key: KAFKA-9636 > URL: https://issues.apache.org/jira/browse/KAFKA-9636 > Project: Kafka > Issue Type: Bug > Components: streams > Affects Versions: 2.4.1 > Reporter: Paul Snively > Assignee: John Roesler > Priority: Major > Attachments: merge_issue.zip > > > Attempting to join two KTables yields a `Topology` that, when tested with > `TopologyTestDriver` by adding records to the two `TestInputTopic`s, results > in an empty `TestOutputTopic`. > I'm attaching a very small reproduction. The code is in Scala. The project is > therefore an "sbt" project. You can reproduce the results from your shell > with `sbt test`. The failure output will include the `describe` of the > `Topology` in question. -- This message was sent by Atlassian Jira (v8.3.4#803005)