Description
A few issues related to recently committed HBASE-803
- The HTable api still takes an integer amount rather than long, mismatching HRI.
- Binary increments are 10 times faster for small amounts than going Bytes.toLong, += amount, Bytes.toBytes. Twice as fast for large amounts (binary incrementor just loops a bunch of single increments, though there is plenty of room for optimizations in my current implementation)
- Using a binary increment means we don't have to worry about the size of the value. If someone wants a 16 byte value they can have it, just have to initialize as such. If no existing value exists, will default to long/8 bytes. Only odd behavior will be what happens when you are at the max value, currently will just stay at all 11111 binary. Could actually grow the byte[] but then we can't do things in place. I'm okay with leaving it like that, not exactly sure what the current implementation would do, throw an exception or wrap?
- Using binary incrementing, we can directly manipulate values in the memcache rather than sending updates with the same timestamp. I think we should hold off on doing this until
HBASE-1234goes in. We'll then have to deal directly with hlog. (this issue is not going to address this)