Split requests at the top-level broadcast group
Split requests at the top-level broadcast group

The new config structure is marshalled into a tree structure in our
code, where leaf nodes implement concrete calls to backends, and
intermediate nodes are of type BroadcastGroup.

We try to split requests that include globs and resolve into very many
metric names into batches as to not cause out-of-memory problems in the
carbonapi (or -zipper) process when the responses come back. This is
done by sending out Find requests to each leaf node.

As the code is written, however, we initiate the calls to make these
Find requests once for every BroadcastGroup node that we hit on our way
to the leaves. This causes exponential amplification of Find requests,
which makes us and the program sad for other reasons.

dgryski/carbonapi