On Jan 28, 1:28 am, Jay Kreps <
jay.kr...@gmail.com> wrote:
> For (6) I think you are expecting behavior that is not there. There
> are three consistency approaches in dynamo are:
> 1. Read repair. This does repair the value but does so at read time
> not in the background.
> 2. Writing to random nodes when a node is down, and having that node
> push the value to the right location
> 3. A checksum based log catchup mechanism
>
> We have really only implemented (1) and (2). (2) is disabled for now
> because our tests showed this exhibits a swarming behavior.
In my testing, similar to Dan's testing, I'm not able to get (1) to
work. The steps I took, and configuration.
Two servers, with 8 partitions total.
stores.xml
---------------
<store>
<name>test</name>
<persistence>bdb</persistence>
<routing>client</routing>
<replication-factor>2</replication-factor>
<preferred-reads>2</preferred-reads>
<required-reads>1</required-reads>
<preferred-writes>2</preferred-writes>
<required-writes>1</required-writes>
...
</store>
cluster.xml
<server>
<id>0</id>
<host>node0</host>
<http-port>8081</http-port>
<socket-port>6666</socket-port>
<partitions>0,2,4,6</partitions>
</server>
<server>
<id>1</id>
<host>node1</host>
<http-port>8081</http-port>
<socket-port>6666</socket-port>
<partitions>1,3,5,7</partitions>
</server>
-------------------
1) put value, read value, works fine, both servers running.
2) shutdown node0, put value, read value, works fine
3) start node0, get value from step 2, works fine.
4) shutdown node1, read value from step 2, fail.
What am I missing? Wouldn't the read from step 3 have pushed the
missing value from node1 to node0 so that step 4 would succeed? Would
setting required-read = replication-factor fix this problem?