Permalink
Browse files

Initial version

  • Loading branch information...
0 parents commit 79208f32d7d336c700032e0f6e057311e7c9608b Incubaid committed Nov 17, 2010
Showing with 21,318 additions and 0 deletions.
  1. +19 −0 .hgignore
  2. BIN 3rd-party/tokyocabinet-1.4.45.tar.gz
  3. +38 −0 CHANGELOG
  4. +54 −0 COMPILING
  5. +682 −0 COPYING
  6. +27 −0 LIBRARIES
  7. +9 −0 META
  8. +43 −0 Makefile
  9. +47 −0 README
  10. +17 −0 _init.ml
  11. +22 −0 _tags
  12. +50 −0 arakoon.odocl
  13. +15 −0 buildInSandbox.sh
  14. +43 −0 cfg/arakoon.ini
  15. +94 −0 createNewQPackages.py
  16. +41 −0 ctrl/nodes.ml
  17. +6 −0 debian/README
  18. +6 −0 debian/README.Debian
  19. +9 −0 debian/README.source
  20. +10 −0 debian/arakoon.default.ex
  21. +20 −0 debian/arakoon.doc-base.EX
  22. +1 −0 debian/arakoon.install
  23. +5 −0 debian/changelog
  24. +1 −0 debian/compat
  25. +22 −0 debian/control
  26. +50 −0 debian/copyright
  27. +4 −0 debian/cron.d.ex
  28. +1 −0 debian/docs
  29. +45 −0 debian/emacsen-install.ex
  30. +15 −0 debian/emacsen-remove.ex
  31. +25 −0 debian/emacsen-startup.ex
  32. +157 −0 debian/init.d.ex
  33. +296 −0 debian/init.d.lsb.ex
  34. +1 −0 debian/libarakoon-ocaml-dev.dirs
  35. +11 −0 debian/libarakoon-ocaml-dev.install
  36. +59 −0 debian/manpage.1.ex
  37. +154 −0 debian/manpage.sgml.ex
  38. +291 −0 debian/manpage.xml.ex
  39. +2 −0 debian/menu.ex
  40. +39 −0 debian/postinst.ex
  41. +37 −0 debian/postrm.ex
  42. +35 −0 debian/preinst.ex
  43. +38 −0 debian/prerm.ex
  44. +13 −0 debian/rules
  45. +23 −0 debian/watch.ex
  46. +77 −0 doc/client.tex
  47. +81 −0 doc/consistency.tex
  48. +24 −0 doc/deployment.dot
  49. +85 −0 doc/getting_started.tex
  50. +77 −0 doc/introduction.tex
  51. +27 −0 doc/manifest.tex
  52. +38 −0 doc/part3.tex
  53. +83 −0 doc/protocol.tex
  54. +27 −0 doc/state_machine.tex
  55. +66 −0 doc/states.dot
  56. +1,078 −0 doc/states.eps
  57. +63 −0 examples/ocaml/demo.ml
  58. +30 −0 examples/python/demo.py
  59. +41 −0 extension/client/ArakoonClient.py
  60. +139 −0 extension/client/ArakoonConfig.py
  61. +11 −0 extension/client/extension.cfg
  62. +163 −0 extension/server/cmdtools/ArakoonCmdtools.py
  63. +5 −0 extension/server/cmdtools/extension.cfg
  64. +418 −0 extension/server/config/ArakoonConfig.py
  65. +5 −0 extension/server/config/extension.cfg
  66. +22 −0 extension/test/__init__.py
  67. +115 −0 extension/test/client/ArakoonClientProtocolTest.py
  68. +22 −0 extension/test/client/__init__.py
  69. +12 −0 extension/test/monkey/arakoon_monkey.cfg.example
  70. +347 −0 extension/test/monkey/arakoon_monkey.py
  71. +71 −0 extension/test/monkey/arakoon_monkey_config.py
  72. +128 −0 extension/test/server/TestCmdTools.py
  73. +243 −0 extension/test/server/TestConfig.py
  74. +22 −0 extension/test/server/__init__.py
  75. +503 −0 extension/test/server/system_tests_anomaly.py
  76. +282 −0 extension/test/server/system_tests_basic.py
  77. +549 −0 extension/test/server/system_tests_common.py
  78. +241 −0 extension/test/server/system_tests_long.py
  79. +199 −0 myocamlbuild.ml
  80. +1 −0 oshell
  81. +7 −0 report.sh
  82. +39 −0 setup.py
  83. +63 −0 src/all_test.ml
  84. +7 −0 src/arakoon_client.mllib
  85. +60 −0 src/client/arakoon_client.mli
  86. +58 −0 src/client/arakoon_exc.ml
  87. +18 −0 src/client/arakoon_exc.mli
  88. +96 −0 src/client/arakoon_remote_client.ml
  89. +1 −0 src/client/arakoon_remote_client.mli
  90. +235 −0 src/client/arakoon_remote_client_test.ml
  91. +134 −0 src/client/benchmark.ml
  92. +95 −0 src/client/client_main.ml
  93. +228 −0 src/client/client_protocol.ml
  94. +195 −0 src/client/common.ml
  95. +27 −0 src/client/nodestream.ml
  96. +31 −0 src/client/nodestream_main.ml
  97. +527 −0 src/client/python/Arakoon.py
  98. +85 −0 src/client/python/ArakoonClientConnection.py
  99. +82 −0 src/client/python/ArakoonExceptions.py
  100. +469 −0 src/client/python/ArakoonProtocol.py
  101. +83 −0 src/client/python/ArakoonValidators.py
  102. +22 −0 src/client/python/__init__.py
  103. +60 −0 src/client/remote_nodestream.ml
  104. +64 −0 src/extra.ml
  105. +266 −0 src/inifiles/inifiles.ml
  106. +81 −0 src/inifiles/inifiles.mli
  107. +35 −0 src/inifiles/inilexer.mll
  108. +39 −0 src/inifiles/parseini.mly
  109. +3 −0 src/libcutil.clib
  110. +281 −0 src/main.ml
  111. +47 −0 src/msg/message.ml
  112. +39 −0 src/msg/messaging.ml
  113. +261 −0 src/msg/tcp_messaging.ml
  114. +248 −0 src/msg/tcp_messaging.ml.old
  115. +161 −0 src/msg/tcp_messaging_test.ml
  116. +42 −0 src/node/backend.ml
  117. +123 −0 src/node/catchup.ml
  118. +119 −0 src/node/catchup_test.ml
  119. +221 −0 src/node/local_store.ml
  120. +124 −0 src/node/mem_store.ml
  121. +178 −0 src/node/node_cfg.ml
  122. +263 −0 src/node/node_main.ml
  123. +160 −0 src/node/store.ml
  124. +213 −0 src/node/sync_backend.ml
  125. +120 −0 src/node/test_backend.ml
  126. +151 −0 src/otc/Hotc.ml
  127. +85 −0 src/otc/Otc.ml
  128. +69 −0 src/otc/Prefix_otc.ml
  129. +124 −0 src/otc/hotc_test.ml
  130. +3 −0 src/otc/libotc.clib
  131. +32 −0 src/otc/logging.ml
  132. 0 src/otc/otc.mllib
  133. +125 −0 src/otc/otc_test.ml
  134. +436 −0 src/otc/otc_wrapper.c
  135. +148 −0 src/paxos/master.ml
  136. +107 −0 src/paxos/mp_msg.ml
  137. +185 −0 src/paxos/multi_paxos.ml
  138. +743 −0 src/paxos/multi_paxos_fsm.ml
  139. +537 −0 src/paxos/multi_paxos_test.ml
  140. +70 −0 src/paxos/multi_paxos_type.ml
  141. +61 −0 src/paxos/prologue.ml
  142. +25 −0 src/paxos/quorum.ml
  143. +256 −0 src/paxos/slave.ml
  144. +44 −0 src/paxos/sn.ml
  145. +33 −0 src/paxos/value.ml
  146. +365 −0 src/system/single.ml
  147. +26 −0 src/system/system_tests.ml
  148. +101 −0 src/tlog/compression.ml
  149. +62 −0 src/tlog/compression_test.ml
  150. +80 −0 src/tlog/mem_tlogcollection.ml
  151. +278 −0 src/tlog/tlc2.ml
  152. +40 −0 src/tlog/tlc2_test.ml
  153. +195 −0 src/tlog/tlog_test.ml
  154. +287 −0 src/tlog/tlogcollection.ml
  155. +178 −0 src/tlog/tlogcollection_test.ml
  156. +124 −0 src/tlog/tlogcommon.ml
  157. +143 −0 src/tlog/tlogreader.ml
  158. +172 −0 src/tlog/tlogreader2.ml
  159. +43 −0 src/tlog/tlogreader2_test.ml
  160. +64 −0 src/tlog/tlogutil.ml
  161. +60 −0 src/tlog/tlogwriter.ml
  162. +126 −0 src/tlog/update.ml
  163. +42 −0 src/tlog/update_test.ml
  164. +60 −0 src/tools/arakoon_crc32c.c
  165. +43 −0 src/tools/backoff.ml
  166. +38 −0 src/tools/backoff_test.ml
  167. +820 −0 src/tools/bsd_crc32c.c
  168. +24 −0 src/tools/bsd_crc32c.h
  169. +26 −0 src/tools/cpu_detect.ml
  170. +78 −0 src/tools/cpudetect.c
  171. +9 −0 src/tools/cpudetect.h
  172. +24 −0 src/tools/crc32c.ml
  173. +6 −0 src/tools/crc32c.mli
  174. +76 −0 src/tools/crc32c_test.ml
  175. +88 −0 src/tools/fsm.ml
  176. +204 −0 src/tools/llio.ml
  177. +36 −0 src/tools/log_extra.ml
  178. +100 −0 src/tools/lwt_buffer.ml
  179. +64 −0 src/tools/lwt_buffer_test.ml
  180. +69 −0 src/tools/lwtq.ml
  181. +26 −0 src/tools/network.ml
  182. +138 −0 src/tools/oUnit_XML.ml
  183. +70 −0 src/tools/server.ml
  184. +67 −0 src/tools/server_test.ml
  185. +50 −0 tools/kester.py
@@ -0,0 +1,19 @@
+syntax: glob
+doc/*.aux
+doc/*.log
+doc/*.pdf
+dist/*
+arakoon.egg-info/*
+arakoon.docdir*
+build/*
+main.native
+main.byte
+main.d.byte
+benchmark.native
+benchmark.byte
+*.pyc
+*.orig
+
+syntax:regexp
+^_build
+~$
Binary file not shown.
@@ -0,0 +1,38 @@
+h2. Arakoon 0.8.0 release notes
+h3. What is release 0.8.0
+Arakoon 0.8.0 is the first public release. It contains a minimal set of features required for a distributed key-value store.
+Arakoon is released under a dual license model as specified on the [licensing page|http://www.arakoon.org/display/ARAKOON/licensing]
+
+h5. Our Aim
+We want a simple distributed key-value store that is easy to understand and use; while at the same time takes into consideration the following factors:
+
+h5. Consistency
+The system as a whole needs to provide a consistent view on the distributed state. This stems from the experience that eventual consistency is too heavy a burden for a user application to manage.
+
+A simple example is the retrieval of the value for a key where you might receive none, one or multiple values depending on the weather conditions. The next question is always: Why don't a get a result? Is it because there is no value, or merely because I currently cannot retrieve it?
+
+h5. Conditional and Atomic Updates
+We don't need full blown transactions (would be nice to have though), but we do need updates that abort if the state is not what we expect it to be. So at least an atomic conditional update and an atomic multi-update are needed.
+
+h5. Robustness
+The system must be able to cope with failure of individual components, without concessions to consistency.
+However, whenever consistency can no longer be guaranteed, updates must simply fail.
+
+h5. Locality Control
+When we deploy a system over 2 datacenters, we want guarantees that the entire state is indeed present in both datacenters. This is something we could not get from distributed hash tables using consistent hashing.
+
+h5. Healing & Recovery
+Whenever a component dies and is subsequently revived or replaced, the system must be able to guide that component towards a situation where that node again fully participates. If this cannot be done fully automatically, then human intervention should be trivial.
+
+h5. Explicit Failure
+Whenever there is something wrong, failure should propagate quite quickly.
+This in contrast to systems that keep on trying to remedy the situation themselves all the time.
+
+h3. Known issues
+* Transaction logs are never collapsed. The next major release will include a tool to do this. [Jira issue|http://jira.incubaid.com/browse/ARAKOON-31]
+* Argument and docstring not present in ArakoonClient. [Jira issue|http://jira.incubaid.com/browse/ARAKOON-26]
+
+If you experience any problems with this release, please fill a bug in our Jira bugtracking system as described on the [contact us page|http://www.arakoon.org/display/ARAKOON/Contact+Us] and specify 0.8.0 as affected version.
+
+h3. Documentation
+Check the [documentation section|http://www.arakoon.org/display/ARAKOON/Documentation] on the Arakoon portal for how to get started.
@@ -0,0 +1,54 @@
+PREREQUISITES:
+
+ocaml >= 3.11.0 : aptitude
+ocaml-findlib >= 1.2.2 : aptitude
+libounit-ocaml-dev >= 1.0.3 : aptitude
+libreact-ocaml-dev : aptitude
+libtext-ocaml-dev : aptitude
+camlp4-extra : aptitude
+bzip2 : aptitude
+libbz2-dev : aptitude
+libbz2-ocaml-dev : aptitude
+ocaml-lwt = 2.1.1 : darcs get --to-match 'hash 20100825112633-c41ad-c9fab33910d2bb5f4d96ee7807e8c88f26b44739' http://ocsigen.org/darcs/lwt/
+ make
+ sudo make install
+
+
+COMPILING:
+
+we use ocamlbuild combined with ocamlfind as main driver for our builds.
+
+manifesto
+ocamlbuild manifest.pdf ==> _build/manifest.pdf
+
+executable
+ocamlbuild main.native ==> main.native
+
+libraries
+ocamlbuild arakoon_client.cma arakoon_client.cmxa ==>
+ _build/src/arakoon_client.cma
+ _build/src/arakoon_client.cmxa
+ src/client/arakoon_exc.mli
+ _build/src/client/arakoon_exc.cmi
+ _build/src/client/arakoon_exc.cmx
+ src/client/arakoon_client.mli
+ _build/src/client/arakoon_client.cmi
+ _build/src/client/arakoon_client.cmx
+ src/client/arakoon_remote_client.mli
+ _build/src/client/arakoon_remote_client.cmi
+ _build/src/client/arakoon_remote_client.cmx
+
+RUNNING THE TESTS:
+
+./main.native --run-all-tests
+
+COVERAGE:
+Bisect needs to be installed. (get it from http://bisect.x9c.fr/)
+
+ocamlbuild -tag use_bisect -tag camlp4of main.d.byte
+./report.sh
+
+have fun,
+
+The arakoon team
+
Oops, something went wrong.

0 comments on commit 79208f3

Please sign in to comment.