-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/33146/
-----------------------------------------------------------

(Updated April 16, 2015, 10:43 a.m.)


Review request for samza.


Changes
-------

Please see the new description for details about this iteration.


Summary (updated)
-----------------

New KeyValueStore Features


Bugs: SAMZA-647
    https://issues.apache.org/jira/browse/SAMZA-647


Repository: samza


Description (updated)
-------

* Adding new KeyValueStore methods: Map<K, V> getAll(List<K>), and void 
deleteAll(List<K>).
**Please note: "Backwards incompatible API changes, config changes, or library 
upgrades should only happen between major revision changes, or when the major 
revision is 0." -- since the latter is true, I found that adding the new 
methods to the already-existing interface to be a better solution, even though 
it breaks backward compatability (please see the first iteration for 
context).** Alternatively, to maintain backward compat., I would have added a 
new contract and a new class for each class that implements KeyValueStore (to 
implement the new contract and pass calls throught to the underlying store, 
whose type needs to change in the constructor to the new contract).
* Improved the javadoc of KeyValueStore to have the same voice, to add API 
notes, and to follow the javadoc standards.
* Making the KeyValueStore extend AutoClosable and Flushable (since we can use 
Java 1.7 now).
* Removing stress tests from TestKeyValueStores.scala because:
* * Unit tests are not meant to be stress-testing the system,
* * The test load looked arbitrary,
* * It wasn't measuring anything (just testing it doesn't crash),
* * Stress testing requires extended periods of testing, and
* * My machine, a MacBook Air, is not beefy enough to survive stress tests; 
they should be run on a typical production machine and not a dev one -- a flaky 
test is not a good test.
* * There's a test class dedicated for KV stores' performance testing: 
TestKeyValuePerformance
* Last, but definitely not least, the main motiviation behind this change: 
Allowing RocksDbKeyValueStore to implement getAll(List<K>) to call 
multiGet(List<K>); Preliminary tests showed that multiGet is at least 1.25x 
faster per key than get (see 
https://reviews.facebook.net/rROCKSDB4985a9f73b9fb8a0323fbbb06222ae1f758a6b1d).


Diffs (updated)
-----

  
samza-kv-inmemory/src/main/scala/org/apache/samza/storage/kv/inmemory/InMemoryKeyValueStore.scala
 217333c84c696c0cc1bc3eeabf1c4066a6e89795 
  
samza-kv-rocksdb/src/main/scala/org/apache/samza/storage/kv/RocksDbKeyValueStore.scala
 66c2a0dc2e38e21f951727a30f0987776ac52fe2 
  samza-kv/src/main/java/org/apache/samza/storage/kv/KeyValueStore.java 
b708341abed15aaad34df5934f5f310bc1feb87a 
  samza-kv/src/main/scala/org/apache/samza/storage/kv/CachedStore.scala 
61bb3f6acb080b653f8b11176538549738255acc 
  
samza-kv/src/main/scala/org/apache/samza/storage/kv/KeyValueStorageEngine.scala 
3a23daf053f0b8dec3a7ec83a51c9c5527078a3b 
  
samza-kv/src/main/scala/org/apache/samza/storage/kv/KeyValueStoreMetrics.scala 
79092b91c9498e55f1c4e28661b7280c6c19cef7 
  samza-kv/src/main/scala/org/apache/samza/storage/kv/LoggedStore.scala 
26f4cd9cfef305546c85ef9330f3e8b8be5336f7 
  
samza-kv/src/main/scala/org/apache/samza/storage/kv/NullSafeKeyValueStore.scala 
4f48cf490d6c1012591a602c0d29dcc71473090f 
  
samza-kv/src/main/scala/org/apache/samza/storage/kv/SerializedKeyValueStore.scala
 531e8bef2069a77fa9ceab36fa738bbaa162fe8c 
  samza-test/src/main/config/perf/kv-perf.properties 
33fcd8d1aea14ecea47bbadb24936f737feedb39 
  
samza-test/src/test/scala/org/apache/samza/storage/kv/TestKeyValueStores.scala 
50dfc10bb053d74dba70fdbce0ef87609ba447ea 

Diff: https://reviews.apache.org/r/33146/diff/


Testing
-------

Unit-tested.


Thanks,

Mohamed Mahmoud (El-Geish)

Reply via email to