Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Antidote configuration #397

Merged
merged 32 commits into from
Nov 14, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4dccbe3
Commented time warp option out, this is set by default
Oct 24, 2019
6cf5e4f
Removed the ERL_MAX_PORTS env parameter. This is no longer used and i…
Oct 24, 2019
0233ca6
Removed partially obsolete max ETS tables argument. The amount is not…
Oct 24, 2019
c8a4a55
Removed debug configration, not used and is the same as the current c…
Oct 30, 2019
6cdb098
Cleaned up config, removed ability to replace OS variables
Oct 30, 2019
a3a3909
Unified and simplified Antidote configuration.
Oct 31, 2019
4cf28fc
Use long name for travis job
Oct 31, 2019
f35ee43
Coverage for new validate_data_dir function
Nov 4, 2019
8c42364
Added kernel network config for documentation purposes. Removed eunit…
Nov 4, 2019
a0482f1
Included eunit into the coverage results. Small hack until we can spe…
Nov 4, 2019
84897dc
Version 0.2.1
Nov 4, 2019
a4e7bc2
Added args to shell command. Moved antidote_stats from application to…
Nov 5, 2019
1adedbb
Fixed docker-compose file and docker-build make target
Nov 5, 2019
bdd11a3
Added log size metric on startup and append
Oct 23, 2019
0c29342
Added log size metric to dashboard
Oct 23, 2019
e22fd20
Improved Grafana dashboard
Nov 6, 2019
4bf7212
lint
Nov 6, 2019
6f4ff63
Moved monitoring to antidote_stats repository
Nov 7, 2019
7433f76
Fixed logging output and removed erlang ct_slave_ext code
Nov 7, 2019
5a07c4e
Added link to monitoring setup
Nov 7, 2019
9e1ea4e
Bumped stats and more stats collection WIP
Nov 8, 2019
5c524fc
More stats, internal log access, DC operations. Bumped antidote_stats…
Nov 11, 2019
4a54660
Changed to log macros
Nov 11, 2019
8881dc0
Moved adding error logger out of stats module, caused crashes before.…
Nov 12, 2019
9824f4d
Removed antidote_stats from supervision tree, not needed. Added more …
Nov 8, 2019
6edacb9
Logging and metrics improved.
Nov 12, 2019
1281f49
Making dialyzer happy
Nov 12, 2019
184d51b
Changed readme to fit D3.4 and LiRA
Nov 13, 2019
3f8251a
Added option to disable metrics. Removed testing doc to move to docum…
Nov 13, 2019
f98fa12
Added REST client and web shell application
Nov 13, 2019
51d93a5
Redirected slave logs to ct master logs
Nov 14, 2019
ae46f2c
Added new links to documentation
Nov 14, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ script:
- make test
- make reltest
- make systests
- make coverage
- rebar3 as test coveralls send
- make dialyzer
- make lint
Expand Down
32 changes: 14 additions & 18 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
REBAR = $(shell pwd)/rebar3
.PHONY: rel test relgentlerain
COVERPATH = $(shell pwd)/_build/test/cover
.PHONY: rel test relgentlerain docker-build docker-run

all: compile

Expand All @@ -18,15 +19,11 @@ cleantests:
rm -f test/multidc/*.beam
rm -rf logs/

shell:
$(REBAR) shell --name='antidote@127.0.0.1' --setcookie antidote --config config/sys-debug.config

# same as shell, but automatically reloads code when changed
# to install add `{plugins, [rebar3_auto]}.` to ~/.config/rebar3/rebar.config
# the tool requires inotifywait (sudo apt install inotify-tools)
# see https://github.com/vans163/rebar3_auto or http://blog.erlware.org/rebar3-auto-comile-and-load-plugin/
auto:
$(REBAR) auto --name='antidote@127.0.0.1' --setcookie antidote --config config/sys-debug.config
shell: rel
export NODE_NAME=antidote@127.0.0.1 ; \
export COOKIE=antidote ; \
export ROOT_DIR_PREFIX=$$NODE_NAME/ ; \
_build/default/rel/antidote/bin/antidote console ${ARGS}

rel:
$(REBAR) release
Expand Down Expand Up @@ -58,10 +55,13 @@ compile-utils: compile
done

test:
mkdir -p eunit_logs
${REBAR} eunit skip_deps=true

coverage:
# copy the coverdata files with a wildcard filter
# won't work if there are multiple folders (multiple systests)
cp logs/*/*singledc*/../all.coverdata ${COVERPATH}/singledc.coverdata ; \
cp logs/*/*multidc*/../all.coverdata ${COVERPATH}/multidc.coverdata ; \
${REBAR} cover --verbose

singledc: compile-utils rel
Expand Down Expand Up @@ -94,12 +94,9 @@ dialyzer:
${REBAR} dialyzer

docker-build:
DOCKERTMPDIR="$(shell mktemp -d ./docker-tmpdir.XXXXXXXX)" ; \
wget "https://raw.githubusercontent.com/AntidoteDB/docker-antidote/master/local-build/Dockerfile" -O "$$DOCKERTMPDIR/Dockerfile" ; \
wget "https://raw.githubusercontent.com/AntidoteDB/docker-antidote/master/local-build/entrypoint.sh" -O "$$DOCKERTMPDIR/entrypoint.sh" ; \
wget "https://raw.githubusercontent.com/AntidoteDB/docker-antidote/master/local-build/start_and_attach.sh" -O "$$DOCKERTMPDIR/start_and_attach.sh" ; \
docker build -f $$DOCKERTMPDIR/Dockerfile --build-arg DOCKERFILES=$$DOCKERTMPDIR -t antidotedb:local-build . ; \
[ ! -d $$DOCKERTMPDIR ] || rm -r $$DOCKERTMPDIR
tmpdir=`mktemp -d` ; \
wget "https://raw.githubusercontent.com/AntidoteDB/docker-antidote/v0.2.1/local-build/Dockerfile" -O "$$tmpdir/Dockerfile" ; \
docker build -f $$tmpdir/Dockerfile -t antidotedb:local-build .

docker-run: docker-build
docker run -d --name antidote -p "8087:8087" antidotedb:local-build
Expand All @@ -108,4 +105,3 @@ docker-clean:
ifneq ($(docker images -q antidotedb:local-build 2> /dev/null), "")
docker image rm -f antidotedb:local-build
endif
[ ! -d docker-tmpdir* ] || rm -r docker-tmpdir*
82 changes: 50 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,75 @@
Antidote
AntidoteDB
============

[![Build Status](https://travis-ci.org/AntidoteDB/antidote.svg?branch=master)](https://travis-ci.org/AntidoteDB/antidote)
[![Coverage Status](https://coveralls.io/repos/github/AntidoteDB/antidote/badge.svg?branch=master)](https://coveralls.io/github/AntidoteDB/antidote?branch=master)

Welcome to the Antidote repository, the reference platform of the [SyncFree European Project](https://syncfree.lip6.fr/) and the [LightKone European Project](https://www.lightkone.eu/)

You will find all information in the documentation at [http://antidotedb.eu](http://antidotedb.eu).
Welcome to the Antidote repository, the reference platform of the [SyncFree European Project](https://syncfree.lip6.fr/) and the [LightKone European Project](https://www.lightkone.eu/).

For benchmarking Antidote deployments, checkout the [Antidote Benchmarks](https://github.com/AntidoteDB/Benchmarks) repository.
Description
===========

AntidoteDB is a highly available geo-replicated key-value database.
AntidoteDB provides features that help programmers to write correct applications while having the same performance and horizontal scalability as AP/NoSQL databases.
Furthermore, AntidoteDB operations are based on the principle of synchronization-free execution by using Conflict-free replicated datatypes (*CRDTs*).


Development
-----------
Features
=========

Antidote requires Erlang 21 or greater.
**CRDTs**

Use the following `Makefile` targets to build and test antidote:
High-level replicated data types that are designed to work correctly in the presence of concurrent updates and partial failures.

# compile the project:
make compile
**Highly Available Transactions**

# run the unit tests:
make test
Traditional ACID transactions were built for single-machine deployments.
On the one hand, it is expensive to implement ACID transactions in distributed deployments.
On the other hand, highly-available transactions (HAT) provide strong consistency within a data center,
but still perform well in geo-replicated deployments.

# run the system tests:
make systests
**Geo-replication**

# Run dialyzer to check types:
make dialyzer
Designed to run on multiple servers in locations distributed world-wide.
It provides continuous functioning even when there are failures or network partition.

# Open a shell:
make shell

# Build a release:
make rel
How to Use
==========

You will find all information on the [project website](http://antidotedb.eu) or the [usage documentation](https://antidotedb.gitbook.io/documentation/).

### Code style
Small tutorials on how to use Antidote can be found for [Java](https://github.com/AntidoteDB/antidote-java-tutorial)
and [Jupyter Notebook](https://github.com/AntidoteDB/antidote-jupyter-notebook).

Before commiting code run `make lint` to check the code style.
Topics:

In addition there are the following rules which are not checked automatically:
* [Configuring Features of Antidote](https://antidotedb.gitbook.io/documentation/architecture/configuration)
* [Benchmarking Antidote](https://github.com/AntidoteDB/Benchmarks)
* Deploying Antidote
* [Natively](https://antidotedb.gitbook.io/documentation/deployment/native)
* [Local Docker setup](https://antidotedb.gitbook.io/documentation/deployment/docker)
* [Docker compose setups](https://antidotedb.gitbook.io/documentation/deployment/docker-compose-setup)
* [Docker Swarm](https://antidotedb.gitbook.io/documentation/deployment/dockerswarm)
* [Kubernetes](https://antidotedb.gitbook.io/documentation/deployment/kubernetes)
* [Monitoring an Antidote instance or data center](https://github.com/AntidoteDB/antidote_stats)
* [Protocol Buffer API](https://antidotedb.gitbook.io/documentation/api/protocol-buffer-api)
* [Erlang Client Repository](https://github.com/AntidoteDB/antidote-erlang-client)
* [Java Client Repository](https://github.com/AntidoteDB/antidote-java-client)
* [JavaScript Client Repository](https://github.com/AntidoteDB/antidote_ts_client)
* [Go Client Repository](https://github.com/AntidoteDB/antidote-go-client)
* [Python Client Repository](https://github.com/AntidoteDB/antidote-python-client)
* [REST Client Repository](https://github.com/LightKone/antidote-rest-server)

- Indentation should use 4 spaces (no tabs)
- Exported functions must be documented and have a type specification
Applications that use AntidoteDB:

### Working on dependencies
* [Calender App](https://github.com/AntidoteDB/calender-app)
* [Antidote Web Shell](https://github.com/AntidoteDB/antidote-web-shell)

When working on dependencies of Antidote it can be helpful to use them as [Checkout Dependencies](https://www.rebar3.org/docs/dependencies#section-checkout-dependencies):

- Create a folder named `_checkouts` in your `antidote` folder (next to the `_build` folder)
- Clone the dependency into that folder. The folder name in `_checkouts` must be the name of the dependency in `rebar.config`.
Note that symbolic links in the `_checkouts` folder are ignored.
- When running a rebar3 task on Antidote, it will always use the latest version from the dependencies. It will also recompile all other dependencies, which can be avoided [by patching rebar3](https://github.com/erlang/rebar3/issues/2152)
Contributing & Development
==============

Antidote encourages open-source development.
If you want to contribute, you can find all necessary information in the [developer documentation](https://antidotedb.gitbook.io/documentation/development/setup)
To make yourself familiar with AntidoteDB, you can start by looking at [good first issues](https://github.com/AntidoteDB/antidote/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
109 changes: 0 additions & 109 deletions TESTING.md

This file was deleted.

Loading