GitHub user ajantha-bhat opened a pull request:

    https://github.com/apache/carbondata/pull/2561

    [CARBONDATA-2784][SDK writer] Fixed:Forever blocking wait with more than 21 
batch of data

    **problem:**
    [SDK writer] Forever blocking wait with more than 21 batch of data, when 
consumer is dead due to data loading exception (bad record / out of memory)
    
    **root cause:**
    When the consumer is dead due to data loading exception, writer will be 
forcefully closed. but queue.clear() cleared only snapshot of entries (10 
batches) and close is set to true after that. In between clear() and close = 
true, If more than 10 batches of data is again put into queue. For 11th batch, 
queue.put() goes for forever block as consumer is dead.
    
    **Solution:**
    set close = true, before clearing the queue. This will avoid adding more 
batches to queue from write().
    
    Be sure to do all of the following checklist to help us incorporate 
    your contribution quickly and easily:
    
     - [ ] Any interfaces changed? NA
     
     - [ ] Any backward compatibility impacted? NA
     
     - [ ] Document update required? NA
    
     - [ ] Testing done.
    
     - [ ] For large changes, please consider breaking it into sub-tasks under 
an umbrella JIRA. NA
    


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/ajantha-bhat/carbondata master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/carbondata/pull/2561.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 #2561
    
----
commit ebbe1ef21a1864c3b179ebfb5f0b5d1e2812ef24
Author: ajantha-bhat <ajanthabhat@...>
Date:   2018-07-25T19:05:36Z

    [CARBONDATA-2784][SDK writer] Forever blocking wait with more than 20 batch 
of data, when consumer is dead due to data loading exception
    
    problem:
    
    [SDK writer] Forever blocking wait with more than 21 batch of data, when
    consumer is dead due to data loading exception (bad record / out of
    memory)
    
    root cause:
    
    When the consumer is dead due to data loading exception, writer will be
    forcefully closed. but queue.clear() cleared only snapshot of entries
    (10 batches) and close is set to true after that. In between clear() and
    close = true, If more than 10 batches of data is again put into queue.
    For 11th batch, queue.put() goes for forever block as consumer is dead.
    
    Solution:
    
    set close = true, before clearing the queue. This will avoid adding more
    batches to queue from write().

----


---

Reply via email to