anchor/libmarquise — pull request #18 by barneydesmond (2014-09-26 10:00:25+00:00)
Title: Assign correct addresses to spooled sourcedicts (distinguish simple vs. extended)

**Caveat:** This PR is should only be used if we determine that the correct behaviour is to distinguish between simple and extended sourcedicts (technically, sourcedicts for simple points and extended points). If so, this is a major breaking change with knock-on effects. If not, only a small change is needed, and this PR should be discarded (use the other one).

We've identified a problem with the way that sourcedicts are stored in
the vault. Normally, we generate an address and pass it along with
points and sourcedicts. For simple points, the address gets coerced to
an even number by setting the least significant bit to zero. Extended
points have their LSB set to one.

The same is not happening for sourcedicts. This means that they're being
stored at an unmangled address. As an example, we generate an address of
3. When simple points are sent, the address is coerced to 2. When the
sourcedict is sent the address will still be 3. Now when we retrieve
points from the vault, we find the sourcedict and expect to find data
points at address 3. There are none there.

This represents a big breaking change, it will affect pymarquise and
vaultaire-collector-pmacct.