GitHub user shivsantham opened a pull request: https://github.com/apache/kafka/pull/4021
KAFKA-5972 Flatten SMT does not work with null values A bug in Flatten SMT while doing tests with different SMTs that are provided out-of-box. Flatten SMT does not work as expected with schemaless JSON that has properties with null values. Example json: {A={D=dValue, B=null, C=cValue}} The issue is in if statement that checks for null value. CURRENT VERSION: for (Map.Entry<String, Object> entry : originalRecord.entrySet()) { final String fieldName = fieldName(fieldNamePrefix, entry.getKey()); Object value = entry.getValue(); if (value == null) { newRecord.put(fieldName(fieldNamePrefix, entry.getKey()), null); return; } PROPOSED VERSION: for (Map.Entry<String, Object> entry : originalRecord.entrySet()) { final String fieldName = fieldName(fieldNamePrefix, entry.getKey()); Object value = entry.getValue(); if (value == null) { newRecord.put(fieldName(fieldNamePrefix, entry.getKey()), null); continue; } You can merge this pull request into a Git repository by running: $ git pull https://github.com/shivsantham/kafka trunk Alternatively you can review and apply these changes as the patch at: https://github.com/apache/kafka/pull/4021.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #4021 ---- commit ff377759a943c7bfb89a56ad721e7ba1b3b0b24c Author: siva santhalingam <ssanthalin...@netskope.com> Date: 2017-09-28T23:37:47Z KAFKA-5967 Ineffective check of negative value in CompositeReadOnlyKeyValueStore#approximateNumEntries() long total = 0; for (ReadOnlyKeyValueStore<K, V> store : stores) { total += store.approximateNumEntries(); } return total < 0 ? Long.MAX_VALUE : total; The check for negative value seems to account for wrapping. However, wrapping can happen within the for loop. So the check should be performed inside the loop. commit 3ea736ac17a4a8ce799b1214f6c0b167b44ee977 Author: siva santhalingam <ssanthalin...@netskope.com> Date: 2017-09-29T03:16:29Z KAFKA-5967 Ineffective check of negative value in CompositeReadOnlyKeyValueStore Adding a test for #KAFKA-5967 commit 921664384a7d6f53e2cc76cf5699021cdca73893 Author: siva santhalingam <ssanthalin...@netskope.com> Date: 2017-09-30T08:22:41Z KAFKA-5967 Ineffective check of negative value in CompositeReadOnlyKeyValueStore -Fixing test commit 48e50992139c03099b3249195efc316a84d6bba1 Author: siva santhalingam <ssanthalin...@netskope.com> Date: 2017-10-03T17:41:18Z Flatten SMT does not work with null values A bug in Flatten SMT while doing tests with different SMTs that are provided out-of-box. Flatten SMT does not work as expected with schemaless JSON that has properties with null values. Example json: {A={D=dValue, B=null, C=cValue}} The issue is in if statement that checks for null value. CURRENT VERSION: for (Map.Entry<String, Object> entry : originalRecord.entrySet()) { final String fieldName = fieldName(fieldNamePrefix, entry.getKey()); Object value = entry.getValue(); if (value == null) { newRecord.put(fieldName(fieldNamePrefix, entry.getKey()), null); return; } PROPOSED VERSION: for (Map.Entry<String, Object> entry : originalRecord.entrySet()) { final String fieldName = fieldName(fieldNamePrefix, entry.getKey()); Object value = entry.getValue(); if (value == null) { newRecord.put(fieldName(fieldNamePrefix, entry.getKey()), null); continue; } commit 7abd3d5c76febc3e3f90b140aaf4c8bec7e08e8a Author: siva santhalingam <ssanthalin...@netskope.com> Date: 2017-10-03T18:07:07Z Revert "Flatten SMT does not work with null values" This reverts commit 48e50992139c03099b3249195efc316a84d6bba1. commit 6f9c11726d1baf9eb2446867899218a4f46a77a4 Author: shivsantham <siva.santhalin...@gmail.com> Date: 2017-10-04T22:53:49Z Merge branch 'trunk' of https://github.com/shivsantham/kafka into trunk commit 084466bfd1f8bb9c9a07ec4f8255a42dfc6b8768 Author: shivsantham <siva.santhalin...@gmail.com> Date: 2017-10-04T22:59:27Z KAFKA-5972 Flatten SMT does not work with null values A bug in Flatten SMT while doing tests with different SMTs that are provided out-of-box. Flatten SMT does not work as expected with schemaless JSON that has properties with null values. Example json: {A={D=dValue, B=null, C=cValue}} The issue is in if statement that checks for null value. CURRENT VERSION: for (Map.Entry<String, Object> entry : originalRecord.entrySet()) { final String fieldName = fieldName(fieldNamePrefix, entry.getKey()); Object value = entry.getValue(); if (value == null) { newRecord.put(fieldName(fieldNamePrefix, entry.getKey()), null); return; } PROPOSED VERSION: for (Map.Entry<String, Object> entry : originalRecord.entrySet()) { final String fieldName = fieldName(fieldNamePrefix, entry.getKey()); Object value = entry.getValue(); if (value == null) { newRecord.put(fieldName(fieldNamePrefix, entry.getKey()), null); continue; } ---- ---