/riak_core_demo

Riak Core Demo (KV store)

Primary LanguageErlangOtherNOASSERTION

riak_core_demo

This is a riak demo application following the elixir tutorials by Gpad and adapting them to erlang

(Part 1, Part 2, Part 3, Part 4)

Build

$ rebar3 compile

Run demo

Start the first node:

rebar3 shell --name test1@127.0.0.1 --config config/vars_dev1.config
1> application:ensure_all_started(riak_core_demo).

Start the second node:

rebar3 shell --name test2@127.0.0.1 --config config/vars_dev2.config
1> application:ensure_all_started(riak_core_demo).

Join the two nodes together (run from the first node):

2> riak_core:join('test2@127.0.0.1').

Ping

Test the ping (you can run from both nodes):

3> riak_core_demo:ping().

You should see messages from console like:

{pong, ....}

and in one of the two nodes (it's pseudo random) a message like:

[ping received] from ...

Get/Put values in the store

riak_core_demo:put(a, 1).
riak_core_demo:put(b, 2).
...
riak_core_demo:get(a).
riak_core_demo:get(b).

Handoff

After you insert many data in the store, just try to disconnect the second node from the cluster:

riak_core:leave().

In the console you should be able to see the different messages. Automatically, all information stored in the second node will be transfered to the first node.

To reconnect again the second node, simply:

application:ensure_all_started(riak_core_demo).
riak_core:join('test1@127.0.0.1').

Again, you will see the handoff of some process from the first node and part of the data will be transfered to the second node.

Coverage commands: keys() and values()

After you insert many data in the store, try to get the list of keys stored in all nodes or list of values:

riak_core_demo:keys().
riak_core_demo:values().

Cluster status

Show cluster status:

riak_core_demo:status().