Shouldn't it be required that the latest tags match the previous tags?
I think, as written, someone could do this:
- publish some data with tags={...} fully populated -- these get cached.
- publish another point, with tags=None -- this gets cached.
- If the buffer is now flushed, the result will have tags=None, because that was the most recent thing.
That would pass all checks, but the stored tags (when the block gets flushed) would be None. It's probably not what the user wanted. I think either:
- Require user to pass the same tags every time they push data to this block OR
- If tags=None, don't change the stored tags in the block.
At some level, data producers are doomed to always provide tags, so the the first thing makes more sense to me.
Granted, this would require modification to the aggregator agent (so far unchanged), because you'd need to initialize each new Block (in Provider.save_to_block) with influxdb_tags set from the first transmission. That is messier in the present instance but seems logically safer on the whole. I think the best way would be to have a constructor for Block that parses the block data dict (just as Block.append and Block.extend do), and sets all the things from that (including influxdb_tags). This would make Aggregator, in the long run, less fragile vis a vis stuff in the feed that it doesn't care about.
Originally posted by @mhasself in #467 (comment)
Shouldn't it be required that the latest tags match the previous tags?
I think, as written, someone could do this:
That would pass all checks, but the stored tags (when the block gets flushed) would be None. It's probably not what the user wanted. I think either:
At some level, data producers are doomed to always provide tags, so the the first thing makes more sense to me.
Granted, this would require modification to the aggregator agent (so far unchanged), because you'd need to initialize each new Block (in Provider.save_to_block) with influxdb_tags set from the first transmission. That is messier in the present instance but seems logically safer on the whole. I think the best way would be to have a constructor for Block that parses the block data dict (just as Block.append and Block.extend do), and sets all the things from that (including influxdb_tags). This would make Aggregator, in the long run, less fragile vis a vis stuff in the feed that it doesn't care about.
Originally posted by @mhasself in #467 (comment)