title: multiple fields grouping in storm
body: <p>I have two Bolt class <code>BoltX</code> and <code>BoltY</code>. <code>BoltY</code> receives tuples from <code>BoltX</code>. <code>BoltX</code> declares output with multiple fields, each tuple contains 4 strings:</p>
  
  <pre><code>class BoltX implements IBasicBolt {
      ...
      public void declareOutputFields(OutputFieldsDeclarer declarer) {
          declarer.declare(new Fields("A","B","C","D"));
      }
  }
  </code></pre>
  
  <p>In <code>BoltY</code>:</p>
  
  <pre><code>class BoltX implements IBasicBolt {
      boolean hasReceive = false;
      String A = null;
      String B = null;
      ...
      public void execute(Tuple input, BasicOutputCollector collector) {
          if (!hasReceive) {
              hasReceive = true;
              A = input.getString(0);
              B = input.getString(1);
          }
  
          if (!input.getString(0).equals(A) || !input.getString(1).equals(B)) {
              LOG.error("group error");
              return;
          }
          ...
      }
      ...
  }
  </code></pre>
  
  <p>In Topology：</p>
  
  <pre><code>...
  builder.setBolt("x", new BoltX(), 3);
  builder.setBolt("y", new Bolty(), 3).fieldsGrouping("x", new Fields("A", "B"));
  ...
  </code></pre>
  
  <p>I think that the output from x with same fields "A" and "B" will go to the same task of <code>BoltY</code>.</p>
  
  <p>However, the log of topology shows lots of "group error".</p>
  
  <p>So how to group outputs with same fields  "A" and "B" to the same task of <code>BoltY</code>?</p>