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;
                }

----


---

Reply via email to