[ 
https://issues.apache.org/jira/browse/STORM-1419?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15083280#comment-15083280
 ] 

ASF GitHub Bot commented on STORM-1419:
---------------------------------------

Github user dossett commented on a diff in the pull request:

    https://github.com/apache/storm/pull/977#discussion_r48859729
  
    --- Diff: 
external/storm-solr/src/main/java/org/apache/storm/solr/bolt/SolrUpdateBolt.java
 ---
    @@ -92,11 +94,19 @@ private void ack(Tuple tuple) throws 
SolrServerException, IOException {
             if (commitStgy == null) {
                 collector.ack(tuple);
             } else {
    -            toCommitTuples.add(tuple);
    -            commitStgy.update();
    -            if (commitStgy.commit()) {
    +            if (TupleUtils.isTick(tuple)) {
    +                LOG.debug("TICK! forcing solr client commit");
    +                collector.ack(tuple);
    +                commitStgy.commit();
                     solrClient.commit(solrMapper.getCollection());
                     ackCommittedTuples();
    +            } else {
    +                toCommitTuples.add(tuple);
    +                commitStgy.update();
    +                if (commitStgy.commit()) {
    --- End diff --
    
    The strategy in AbstractHdfsBolt is to set a boolean in the case of a tick 
tuple and then sync if that value is true or if other conditions dictate a 
sync.  
(https://github.com/apache/storm/blob/master/external/storm-hdfs/src/main/java/org/apache/storm/hdfs/bolt/AbstractHdfsBolt.java#L154)
 
    
    The benefit of that approach is to eliminate duplicate code (i.e. that 
calls to ackCommittedTuples() and solrClient.commit()), which I think is a 
substantial benefit.
    
    Here that would looks something like:
    
    ```code
    if (forceCommit || commitStgy.commit()) {
      solrClient.commit(solrMapper.getCollection());
      ackCommittedTuples();
    }
    ```
    With duplicate code removed I would be +1
    
    A unit test would also be helpful. HdfsBolt example is here: 
https://github.com/apache/storm/blob/master/external/storm-hdfs/src/test/java/org/apache/storm/hdfs/bolt/TestHdfsBolt.java#L175


> Solr bolt should handle tick tuples
> -----------------------------------
>
>                 Key: STORM-1419
>                 URL: https://issues.apache.org/jira/browse/STORM-1419
>             Project: Apache Storm
>          Issue Type: Bug
>          Components: storm-solr
>            Reporter: Xin Wang
>            Assignee: Xin Wang
>
> Solr bolt should handle tick tuples.
> Forcing solr client commit when bolt received tick tuple.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to