Skip to content

Instantly share code, notes, and snippets.

@bofm
Created February 14, 2018 18:43
Show Gist options
  • Save bofm/5c9571a2b27e67f77b744db4e3711b7d to your computer and use it in GitHub Desktop.
Save bofm/5c9571a2b27e67f77b744db4e3711b7d to your computer and use it in GitHub Desktop.
tarantool replication test
#!/usr/bin/env bash
cat <<EE > app.lua
box.cfg {
listen = 3301,
read_only = false,
wal_mode = "write",
replication = {"t1:3301", "t2:3301"},
}
box.once('schema', function()
box.schema.user.grant("guest", "read,write,execute", "universe", nil, {if_not_exists = true})
s = box.schema.space.create("x")
s:create_index("primary", {type = "hash"})
end)
require("fiber").create(function()
while true do
box.space.x:replace{require("math").random(10000), 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
box.space.x:delete(require("math").random(10000))
require("fiber").sleep(0.01)
end
end)
EE
cat <<EE > docker-compose-repl-test.yml
version: '3.4'
services:
t1:
image: progaudi/tarantool:1.7.7-232-g47c4f8a97
volumes:
- ./app.lua/:/opt/tarantool/app.lua
command: tarantool /opt/tarantool/app.lua
entrypoint: ''
t2:
image: progaudi/tarantool:1.7.7-232-g47c4f8a97
volumes:
- ./app.lua/:/opt/tarantool/app.lua
command: tarantool /opt/tarantool/app.lua
entrypoint: ''
EE
_dc_bin=$(which docker-compose)
docker-compose() {
$_dc_bin -f docker-compose-repl-test.yml $@
}
trap "docker-compose kill t1 t2; rm -f docker-compose-repl-test.yml app.lua; exit 1" SIGINT SIGTERM EXIT
wait_event_loop() {
while true; do
docker-compose logs $1 | grep "main C> entering the event loop" && break
done
}
tt_eval() {
echo "$2" | docker exec -i $(docker-compose ps -q $1) tarantoolctl connect 3301
}
check_repl_follow() {
local c=$1
tt_eval $c 'box.info().replication' | grep follow >/dev/null && echo "$c: follow" || ( echo "$c: NOT FOLLOW" && false )
}
docker-compose kill t1 t2
docker-compose rm -fv t1 t2
docker-compose up -d t1 t2
wait_event_loop t1
wait_event_loop t2
sleep 2
while true; do
i=t$(( $(( $RANDOM >> 14 )) + 1)) # t1 or t2
docker-compose kill $i
docker-compose rm -fv $i
docker-compose up -d $i
wait_event_loop $i
sleep 5
check_repl_follow t1 && check_repl_follow t2 || break
done
docker-compose logs t1 t2
@bofm
Copy link
Author

bofm commented Feb 14, 2018

bash repl_test.sh
Going to remove tmp_t2_1, tmp_t1_1
Removing tmp_t2_1 ... done
Removing tmp_t1_1 ... done
Creating tmp_t2_1 ... done
Creating tmp_t1_1 ... done
t1_1  | 2018-02-14 18:39:32.662 [1] main C> entering the event loop
t2_1  | 2018-02-14 18:39:31.665 [1] main C> entering the event loop
Killing tmp_t1_1 ... done
Going to remove tmp_t1_1
Removing tmp_t1_1 ... done
Creating tmp_t1_1 ... done
t1_1  | 2018-02-14 18:39:41.662 [1] main C> entering the event loop
t1: follow
t2: follow
Killing tmp_t1_1 ... done
Going to remove tmp_t1_1
Removing tmp_t1_1 ... done
Creating tmp_t1_1 ... done
t1_1  | 2018-02-14 18:39:56.083 [1] main C> entering the event loop
t1: follow
t2: follow
Killing tmp_t2_1 ... done
Going to remove tmp_t2_1
Removing tmp_t2_1 ... done
Creating tmp_t2_1 ... done
t2_1  | 2018-02-14 18:40:10.278 [1] main C> entering the event loop
t1: follow
t2: follow
Killing tmp_t2_1 ... done
Going to remove tmp_t2_1
Removing tmp_t2_1 ... done
Creating tmp_t2_1 ... done
t2_1  | 2018-02-14 18:40:25.103 [1] main C> entering the event loop
t1: follow
t2: follow
Killing tmp_t1_1 ... done
Going to remove tmp_t1_1
Removing tmp_t1_1 ... done
Creating tmp_t1_1 ... done
t1_1  | 2018-02-14 18:40:39.603 [1] main C> entering the event loop
t1: follow
t2: follow
Killing tmp_t1_1 ... done
Going to remove tmp_t1_1
Removing tmp_t1_1 ... done
Creating tmp_t1_1 ... done
t1_1  | 2018-02-14 18:40:55.340 [1] main C> entering the event loop
t1: follow
t2: follow
Killing tmp_t2_1 ... done
Going to remove tmp_t2_1
Removing tmp_t2_1 ... done
Creating tmp_t2_1 ... done
t2_1  | 2018-02-14 18:41:09.949 [1] main C> entering the event loop
t1: NOT FOLLOW
Attaching to tmp_t2_1, tmp_t1_1
t1_1  | 2018-02-14 18:40:55.123 [1] main/101/app.lua C> Tarantool 1.7.7-232-g47c4f8a97
t1_1  | 2018-02-14 18:40:55.123 [1] main/101/app.lua C> log level 5
t1_1  | 2018-02-14 18:40:55.123 [1] main/101/app.lua I> mapping 268435456 bytes for memtx tuple arena...
t1_1  | 2018-02-14 18:40:55.123 [1] main/101/app.lua I> mapping 134217728 bytes for vinyl tuple arena...
t1_1  | 2018-02-14 18:40:55.132 [1] iproto/101/main I> binary: bound to 0.0.0.0:3301
t1_1  | 2018-02-14 18:40:55.133 [1] main/104/applier/t1:3301 I> remote master is 1.7.7 at 172.19.0.2:3301
t1_1  |
t1_1  | 2018-02-14 18:40:55.134 [1] main/105/applier/t2:3301 I> remote master is 1.7.7 at 172.19.0.3:3301
t1_1  |
t1_1  | 2018-02-14 18:40:55.134 [1] main/101/app.lua I> bootstrapping replica from 172.19.0.3:3301
t1_1  | 2018-02-14 18:40:55.176 [1] main/105/applier/t2:3301 I> initial data received
t1_1  | 2018-02-14 18:40:55.329 [1] main/105/applier/t2:3301 I> final data received
t1_1  | 2018-02-14 18:40:55.329 [1] snapshot/101/main I> saving snapshot `./00000000000000025587.snap.inprogress'
t1_1  | 2018-02-14 18:40:55.332 [1] snapshot/101/main I> done
t1_1  | 2018-02-14 18:40:55.333 [1] main/101/app.lua I> ready to accept requests
t1_1  | 2018-02-14 18:40:55.339 [1] main/107/checkpoint_daemon I> started
t1_1  | 2018-02-14 18:40:55.339 [1] main/107/checkpoint_daemon I> scheduled the next snapshot at Wed Feb 14 20:33:56 2018
t1_1  | 2018-02-14 18:40:55.340 [1] main C> entering the event loop
t1_1  | 2018-02-14 18:40:56.314 [1] relay_0x7f7c6543eec0/101/main I> recover from `./00000000000000025587.xlog'
t1_1  | 2018-02-14 18:40:56.315 [1] relay_0x7f7c6543eec0/101/main I> done `./00000000000000025587.xlog'
t1_1  | 2018-02-14 18:40:56.315 [1] relay_0x7f7c6543eec0/101/main I> recover from `./00000000000000025969.xlog'
t1_1  | 2018-02-14 18:41:05.820 [1] relay/172.19.0.3:38956/101/main C> exiting the relay loop
t1_1  | 2018-02-14 18:41:05.820 [1] main/105/applier/t2:3301 I> can't read row
t1_1  | 2018-02-14 18:41:05.820 [1] main/105/applier/t2:3301 coio.cc:348 !> SystemError unexpected EOF when reading from socket, called on fd 10, aka 172.19.0.2:36294: Broken pipe
t1_1  | 2018-02-14 18:41:05.820 [1] main/105/applier/t2:3301 I> will retry every 1.00 second
t1_1  | 2018-02-14 18:41:05.821 [1] main/103/main coio.cc:368 !> SystemError unexpected EOF when reading from socket, called on fd 11, aka 172.19.0.2:3301: Broken pipe
t1_1  | 2018-02-14 18:41:09.852 [1] main/105/applier/t2:3301 I> can't join/subscribe
t1_1  | 2018-02-14 18:41:09.852 [1] main/105/applier/t2:3301 replication.cc:290 E> ER_INSTANCE_UUID_MISMATCH: Instance UUID mismatch: expected 042610e6-e724-4708-b375-4f8a50fc21a2, got 1682ffec-2884-4cbf-ba02-c73883d82cec
t1_1  | 2018-02-14 18:41:09.883 [1] main/110/main I> initial data sent.
t1_1  | 2018-02-14 18:41:09.884 [1] relay/172.19.0.3:39000/101/main I> recover from `./00000000000000025587.xlog'
t1_1  | 2018-02-14 18:41:09.888 [1] relay/172.19.0.3:39000/101/main I> done `./00000000000000025587.xlog'
t1_1  | 2018-02-14 18:41:09.888 [1] relay/172.19.0.3:39000/101/main I> recover from `./00000000000000025969.xlog'
t1_1  | 2018-02-14 18:41:09.934 [1] main/110/main I> final data sent.
t1_1  | 2018-02-14 18:41:09.946 [1] relay_0x7f7c6541eec0/101/main I> recover from `./00000000000000025969.xlog'
t1_1  | 2018-02-14 18:41:09.948 [1] relay_0x7f7c6541eec0/101/main I> done `./00000000000000025969.xlog'
t1_1  | 2018-02-14 18:41:09.948 [1] relay_0x7f7c6541eec0/101/main I> recover from `./00000000000000030154.xlog'
t2_1  | 2018-02-14 18:41:09.814 [1] main/101/app.lua C> Tarantool 1.7.7-232-g47c4f8a97
t2_1  | 2018-02-14 18:41:09.814 [1] main/101/app.lua C> log level 5
t2_1  | 2018-02-14 18:41:09.814 [1] main/101/app.lua I> mapping 268435456 bytes for memtx tuple arena...
t2_1  | 2018-02-14 18:41:09.814 [1] main/101/app.lua I> mapping 134217728 bytes for vinyl tuple arena...
t2_1  | 2018-02-14 18:41:09.827 [1] iproto/101/main I> binary: bound to 0.0.0.0:3301
t2_1  | 2018-02-14 18:41:09.829 [1] main/104/applier/t1:3301 I> remote master is 1.7.7 at 172.19.0.2:3301
t2_1  |
t2_1  | 2018-02-14 18:41:09.829 [1] main/105/applier/t2:3301 I> remote master is 1.7.7 at 172.19.0.3:3301
t2_1  |
t2_1  | 2018-02-14 18:41:09.829 [1] main/101/app.lua I> bootstrapping replica from 172.19.0.2:3301
t2_1  | 2018-02-14 18:41:09.883 [1] main/104/applier/t1:3301 I> initial data received
t2_1  | 2018-02-14 18:41:09.934 [1] main/104/applier/t1:3301 I> final data received
t2_1  | 2018-02-14 18:41:09.935 [1] snapshot/101/main I> saving snapshot `./00000000000000030144.snap.inprogress'
t2_1  | 2018-02-14 18:41:09.939 [1] snapshot/101/main I> done
t2_1  | 2018-02-14 18:41:09.940 [1] main/101/app.lua I> ready to accept requests
t2_1  | 2018-02-14 18:41:09.949 [1] main/107/checkpoint_daemon I> started
t2_1  | 2018-02-14 18:41:09.949 [1] main/107/checkpoint_daemon I> scheduled the next snapshot at Wed Feb 14 19:55:06 2018
t2_1  | 2018-02-14 18:41:09.949 [1] main C> entering the event loop
Killing tmp_t2_1 ... done
Killing tmp_t1_1 ... done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment