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

(Updated April 28, 2015, 10:20 a.m.)


Review request for samza.


Changes
-------

* Fixed failure detected by check-all.sh (putAll metrics)
* Fixed a test file path in README.md
* Added perf tests to compare get vs. getAll performance (please take a close 
look at the perf test); here's a subset of the result:
Msg Count   Bytes/Msg      get ms   getAll ms
    68519         135        3380         549
    58746         564        3060        1076
    30081         607        1483         436
    25366         542        1230         255
    93947         566        6369        1758
    42270         610        3029         768
    81058         763        5785        1662
    19520         387        1250         179
    83502          84        5454         451
    32953         471        2623         434
    68919         825        5106        1256
     9263         481         627          62
    13238         118         858          68
    89747         341        6387        1337
    85254         658        6645        1520
    63351         301        4181         759
    55124         416        3938         792
    12201         335         825          80
    76567         887        5762        2223
    77492         439        5195        1185
    97340         846        7698        5972
    48609         445        3328         616
     4261         654         310          27
    22285         140        1420         125
    19125         292        1298         157
     5873         654         388          50
    80877         999        5859        7983* slower than get here!
    95384         776        6928        1616
    13923          38         882          40
     2362         752         146          30
    13792         474         925         100
    14080         106         899          71
      533         207          36           2
    87771         165        5904         884
    13871         907        1102         261
    31356          81        2148         169
    59574         285        4142         655
    92288         980        7044        2044
    54501          33        3469         246
    36294         662        2588         532
     6066         254         430          49
    32511         928        2608         652
    49528         219        3335         405
    87002         108        5776         489
    72665         774        5193        1219
    27576         314        1851         200
    65125         271        4329         832
    55917         154        3733         422
    51372         781        3633         980
    83189         602        6087        1307
    85522         748        6909        1751
    60153         793        4917        1009
    16603         818        1333         248
     9680         165         741          36
    49536         165        3704         372
    48008         258        3595         486
    27473         973        2288         494
    87476         507        7033        1463
    22661         155        1780         177
    30558        1001        2486         645
    22971         641        2031         302
    31181         650        2523         488
    29879         202        2212         284
    66481         716        5658        1975
    26593         171        2058         184
    15893         989        1595         574
    33785         180        2490         265
    49941          33        3484         206
    23910         372        1712         209
    94867         676        7828        6328
    86260         136        6520         836
    60997         181        4710         667
      874         618          69           4
    77245          51        6028         417
    20520         871        1727         399
    50780         789        3889         941
    18757          57        1378          68
    38911         651        3208         690
    59447         585        5033        3316
    24796         581        2017         360
    51307         418        4106         727
     6083         256         455          24
    64912         205        4998         795
    63663         282        5091         833
    66707         481        5375        1600
    94523         642        8161        4780
    34111         797        2741         599
    52607         275        4450         710
    ...


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


Repository: samza


Description
-------

* 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.
* 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)
-----

  README.md 7f92020726626e606dbd97b86dcd91f4157c9ea7 
  
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/main/scala/org/apache/samza/test/performance/TestKeyValuePerformance.scala
 0858b981add6581230960356f65fe6f6e6ab108f 
  
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