Skip to content

Commit b5cf627

Browse files
committed
Add production warning to README.md
1 parent bef9c9b commit b5cf627

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

README.md

+18-10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## <WARNING>
2+
Rafter is not production ready. It hasn't been tested or run in any production environments.
3+
Furthermore, the log is entirely my own creation. It's possible that it isn't as safe or efficient
4+
as many other log structured backends like leveldb or rocksdb. The protocol is solid and
5+
well tested, and it works as expected in most cases. However, support is not fully guaranteed as I
6+
don't have a current use case for rafter and am not actively developing it. I will however do my
7+
best to respond to reports and fix bugs in an efficient manner.
8+
19
### Introduction
210
Rafter is more than just an erlang implementation of the [raft consensus
311
protocol](https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf).
@@ -13,7 +21,7 @@ local setup and ```{Name, Node}``` tuples when using distributed erlang.
1321
Configuration is dynamic and reconfiguration can be achieved without taking the
1422
system down.
1523

16-
#### Distributed consensus with a replicated log
24+
#### Distributed consensus with a replicated log
1725
For use cases such as implementing distributed databases, a replicated log can
1826
be used internally to provide strong consistency. Operations are serialized and
1927
written to log files in the same order on each node. Once the operation is
@@ -76,10 +84,10 @@ the following:
7684

7785
cd rafter
7886
bin/start-node peerX
79-
87+
8088
The above starts up an erlang VM with appropriate cookie and code path, and
8189
starts a rafter peer utilizing the ``rafter_ets_backend``. The node name, in
82-
this case PeerX (X=1|2|3), should be unique for each node.
90+
this case PeerX (X=1|2|3), should be unique for each node.
8391

8492
These three nodes can now be operated on by the rafter client API. They all have
8593
empty logs at this point and no configuration. Note that all operations on
@@ -92,7 +100,7 @@ they start out blank and the first entry in any log must be a configuration
92100
entry which you set at initial cluster start time. Note that the operation will
93101
fail with a timeout if a majority of nodes are not reachable. However, once
94102
those peers become reachable, the command will be replicated and the cluster
95-
will be configured.
103+
will be configured.
96104

97105
Go to the first erlang shell, where peer1 is running. We're just arbitrarily
98106
choosing a node to be the first leader here. Ensure it is running with
@@ -133,8 +141,8 @@ don't need to use the fully qualified name when talking to it via the shell on
133141
peer1.
134142

135143
```erlang
136-
Peers = [{peer1, 'peer1@127.0.0.1'},
137-
{peer2, 'peer2@127.0.0.1'},
144+
Peers = [{peer1, 'peer1@127.0.0.1'},
145+
{peer2, 'peer2@127.0.0.1'},
138146
{peer3, 'peer3@127.0.0.1'}],
139147
rafter:set_config(peer1, Peers).
140148
```
@@ -148,7 +156,7 @@ ets backend is in use. It is anticipated that this API will grow to include
148156
multi-key and potentially global transactions.
149157

150158
```erlang
151-
%% Create a new ets table
159+
%% Create a new ets table
152160
rafter:op(peer1, {new, sometable}).
153161

154162
%% Store an erlang term in that table
@@ -178,7 +186,7 @@ backend. The ets backend provides the following read operations.
178186
```
179187

180188
### Show the current state of the log for a peer
181-
189+
182190
rr(rafter_log),
183191
sys:get_state(peer1_log).
184192

@@ -196,11 +204,11 @@ Tests require [erlang quickcheck](http://quviq-licencer.com/trial.html) currentl
196204
* start with snapshotting assuming data is ```small``` as described in
197205
section 2 [here](https://ramcloud.stanford.edu/wiki/download/attachments/12386595/compaction.pdf?version=1&modificationDate=1367123151531)
198206
* Client interface
199-
* Client Sequence number for idempotent counters?
207+
* Client Sequence number for idempotent counters?
200208
* Redis like text-based interface ?
201209
* HTTP ?
202210
* parallel eqc tests
203-
* Anti-Entropy
211+
* Anti-Entropy
204212
* Write AAE info into snapshot file during snapshotting
205213

206214
### License

0 commit comments

Comments
 (0)